[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/khtml
From:       Allan Sandfeld Jensen <kde () carewolf ! com>
Date:       2005-05-01 19:47:21
Message-ID: 20050501194721.03E7C3EF () office ! kde ! org
[Download RAW message or body]

CVS commit by carewolf: 

The rest of the mergable acid2 patches.
The rest either; doesn't apply (acid2.txt, acid11.txt),
was already fixed but never copied by Apple (acid.txt),
ridiculous SGML legacy (acid6.txt),
or something I will have to work more on (acid10.txt)


  M +11 -1     ChangeLog   1.426
  M +16 -8     rendering/render_block.cpp   1.66
  M +16 -11    rendering/render_table.cpp   1.280


--- kdelibs/khtml/ChangeLog  #1.425:1.426
@@ -1,5 +1,15 @@
 2005-05-01  Allan Sandfeld Jensen <kde@carewolf.com>
 
-        * renderer/render_box.{h,cpp}: Respect min/max width/height and box-sizing
+        The mergeable of Daves Acid2 patches.
+
+        * renderer/render_block.cpp:
+            - Make sure that percentages that go to auto don't mess up the \
self-collapsing block check. +            - Fix floats to not grow if child floats \
overhang but the height of the outer float is auto. +        * \
renderer/render_box.{h,cpp}: +            - Add support for min/max-width/height for \
positioned elements. +            - Make sure percentage min-height goes to 0 and not \
auto when the percentage does not apply. +        * renderer/render_table.cpp:
+            - Make sure empty tables honor CSS-specified height in strict mode.
+            - Fix baseline alignment within table cells to use the bottom of empty \
blocks.  
 2005-04-30  Harri Porten  <porten@kde.org>

--- kdelibs/khtml/rendering/render_block.cpp  #1.65:1.66
@@ -407,8 +407,16 @@ bool RenderBlock::isSelfCollapsingBlock(
         return false;
 
+    bool hasAutoHeight = style()->height().isVariable();
+    if (style()->height().isPercent() && !style()->htmlHacks()) {
+        hasAutoHeight = true;
+        for (RenderBlock* cb = containingBlock(); !cb->isCanvas(); cb = \
cb->containingBlock()) { +            if (cb->style()->height().isFixed() || \
cb->isTableCell()) +                hasAutoHeight = false;
+        }
+    }
+
     // If the height is 0 or auto, then whether or not we are a self-collapsing \
block depends  // on whether we have content that is all self-collapsing or not.
-    if (style()->height().isVariable() ||
-        (style()->height().isFixed() && style()->height().value() == 0)) {
+    if (hasAutoHeight || ((style()->height().isFixed() || \
                style()->height().isPercent()) && style()->height().value() == 0)) {
         // If the block has inline children, see if we generated any line boxes.  If \
                we have any
         // line boxes, then we can't be self-collapsing, since we have content.
@@ -565,5 +573,5 @@ void RenderBlock::layoutBlock(bool relay
     }
 
-    if( hasOverhangingFloats() && (isFloating() || isTableCell())) {
+    if( hasOverhangingFloats() && ((isFloating() && style()->height().isVariable()) \
|| isTableCell())) {  m_height = floatBottom();
         m_height += borderBottom() + paddingBottom();

--- kdelibs/khtml/rendering/render_table.cpp  #1.279:1.280
@@ -1205,5 +1205,5 @@ void RenderTableSection::calcRowHeight()
             {
                 int b=cell->baselinePosition();
-
+                if (b > cell->borderTop() + cell->paddingTop()) {
                 if (b>baseline)
                     baseline=b;
@@ -1214,4 +1214,5 @@ void RenderTableSection::calcRowHeight()
             }
         }
+        }
 
         //do we have baseline aligned elements?
@@ -1970,12 +1971,16 @@ bool RenderTableCell::absolutePosition(i
 short RenderTableCell::baselinePosition( bool ) const
 {
-    RenderObject *o = firstChild();
+    RenderObject* o = firstChild();
     int offset = paddingTop() + borderTop();
-    if ( !o ) return offset;
-    while ( o->firstChild() ) {
-        if ( !o->isInline() )
+    if (!o) return offset + contentHeight();
+    while (o->firstChild()) {
+        if (!o->isInline())
             offset += o->paddingTop() + o->borderTop();
         o = o->firstChild();
     }
+    
+    if (!o->isInline())
+        return paddingTop() + borderTop() + contentHeight();
+
     offset += o->baselinePosition( true );
     return offset;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic