<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>133310</bug_id>
          
          <creation_ts>2006-08-31 03:28:59 +0000</creation_ts>
          <short_desc>[testcase] padding-bottom not respected in div&apos;s with overflow: auto</short_desc>
          <delta_ts>2006-10-01 17:29:30 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>konqueror</product>
          <component>khtml renderer</component>
          <version>unspecified</version>
          <rep_platform>Gentoo Packages</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Florian Ehrenthal">dizzinger</reporter>
          <assigned_to name="Konqueror Bugs">konqueror-bugs-null</assigned_to>
          
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>465115</commentid>
    <comment_count>0</comment_count>
    <who name="Florian Ehrenthal">dizzinger</who>
    <bug_when>2006-08-31 03:28:59 +0000</bug_when>
    <thetext>Version:            (using KDE KDE 3.5.4)
Installed from:    Gentoo Packages

padding-bottom is ignored for div&apos;s that have overflow: auto and defined width and height.

i created an attachment/testcase which demonstrates the bug...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465118</commentid>
    <comment_count>1</comment_count>
      <attachid>17576</attachid>
    <who name="Florian Ehrenthal">dizzinger</who>
    <bug_when>2006-08-31 03:30:04 +0000</bug_when>
    <thetext>Created attachment 17576
padding-bottom not respected</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465186</commentid>
    <comment_count>2</comment_count>
    <who name="Tommi Tervo">tommi.tervo</who>
    <bug_when>2006-08-31 10:19:17 +0000</bug_when>
    <thetext>Margin is also incomplete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471424</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld">kde</who>
    <bug_when>2006-09-20 16:28:03 +0000</bug_when>
    <thetext>SVN commit 586756 by carewolf:

Overflow-height includes padding-bottom when overflow scrolls.
BUG: 133310


 M  +8 -3      render_block.cpp  


--- branches/KDE/3.5/kdelibs/khtml/rendering/render_block.cpp #586755:586756
@@ -711,8 +711,13 @@
     calcHeight();
     if (oldHeight != m_height) {
         // If the block got expanded in size, then increase our overflowheight to match.
-        if (m_overflowHeight &gt; m_height)
-            m_overflowHeight -= (borderBottom()+paddingBottom());
+        if (m_overflowHeight &gt; m_height) {
+            if (style()-&gt;scrollsOverflow())
+                // overflow-height only includes padding-bottom when it scrolls
+                m_overflowHeight -= borderBottom();
+            else
+                m_overflowHeight -= (borderBottom()+paddingBottom());
+        }
         if (m_overflowHeight &lt; m_height)
             m_overflowHeight = m_height;
     }
@@ -1633,7 +1638,7 @@
 
     if (childrenInline())
         paintLines(pI, scrolledX, scrolledY);
-    else {            
+    else {
         for(RenderObject *child = firstChild(); child; child = child-&gt;nextSibling())
             if(!child-&gt;layer() &amp;&amp; !child-&gt;isFloating())
                 child-&gt;paint(pI, scrolledX, scrolledY);
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474124</commentid>
    <comment_count>4</comment_count>
    <who name="Germain Garand">germain</who>
    <bug_when>2006-10-01 17:29:30 +0000</bug_when>
    <thetext>SVN commit 591050 by ggarand:

some massaging of scrolling overflows calculations to avoid 
regressing on #133310 after the overflowHeight semantic change, 
also fixing it further to only add padding to normal content 
height, not to float bottom&apos;s.

CCBUG: 133310


 M  +7 -9      render_block.cpp  
 M  +4 -4      render_flow.cpp  
 M  +4 -4      render_layer.cpp  


--- branches/KDE/3.5/kdelibs/khtml/rendering/render_block.cpp #591049:591050
@@ -711,20 +711,18 @@
     int toAdd = borderBottom() + paddingBottom();
     if (m_layer &amp;&amp; style()-&gt;scrollsOverflow() &amp;&amp; style()-&gt;height().isVariable())
         toAdd += m_layer-&gt;horizontalScrollbarHeight();
-    if ( hasOverhangingFloats() &amp;&amp; (isFloatingOrPositioned() || flowAroundFloats()) )
+    if ( hasOverhangingFloats() &amp;&amp; !style()-&gt;scrollsOverflow() &amp;&amp; (isFloatingOrPositioned() || flowAroundFloats()) )
         m_overflowHeight = m_height = floatBottom() + toAdd;
 
     int oldHeight = m_height;
     calcHeight();
     if (oldHeight != m_height) {
-        // If the block got expanded in size, then increase our overflowheight to match.
-        if (m_overflowHeight &gt; m_height) {
-            if (style()-&gt;scrollsOverflow())
-                // overflow-height only includes padding-bottom when it scrolls
-                m_overflowHeight -= borderBottom();
-            else
-                m_overflowHeight -= (borderBottom()+paddingBottom());
+        m_overflowHeight -= toAdd;
+        if (m_layer &amp;&amp; style()-&gt;scrollsOverflow()) {
+            // overflow-height only includes padding-bottom when it scrolls
+            m_overflowHeight += paddingBottom();
         }
+        // If the block got expanded in size, then increase our overflowheight to match.
         if (m_overflowHeight &lt; m_height)
             m_overflowHeight = m_height;
     }
@@ -1352,7 +1350,7 @@
 
     int top = borderTop() + paddingTop();
     int bottom = borderBottom() + paddingBottom();
-    if (m_layer &amp;&amp; style()-&gt;scrollsOverflow())
+    if (m_layer &amp;&amp; style()-&gt;scrollsOverflow() &amp;&amp; style()-&gt;height().isVariable())
         bottom += m_layer-&gt;horizontalScrollbarHeight();
 
     m_height = m_overflowHeight = top;
--- branches/KDE/3.5/kdelibs/khtml/rendering/render_flow.cpp #591049:591050
@@ -320,7 +320,7 @@
     // a tiny rel div buried somewhere deep in our child tree.  In this case we have to get to
     // the abs div.
     for (RenderObject *c = firstChild(); c; c = c-&gt;nextSibling()) {
-        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText()) {
+        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText() &amp;&amp; !c-&gt;isInlineFlow()) {
             int lp = c-&gt;yPos() + c-&gt;lowestPosition(false);
             bottom = kMax(bottom, lp);
         }
@@ -345,7 +345,7 @@
     // a tiny rel div buried somewhere deep in our child tree.  In this case we have to get to
     // the abs div.
     for (RenderObject *c = firstChild(); c; c = c-&gt;nextSibling()) {
-        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText()) {
+        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText() &amp;&amp; !c-&gt;isInlineFlow()) {
             int rp = c-&gt;xPos() + c-&gt;rightmostPosition(false);
             right = kMax(right, rp);
         }
@@ -370,7 +370,7 @@
     // a tiny rel div buried somewhere deep in our child tree.  In this case we have to get to
     // the abs div.
     for (RenderObject *c = firstChild(); c; c = c-&gt;nextSibling()) {
-        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText()) {
+        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText() &amp;&amp; !c-&gt;isInlineFlow()) {
             int lp = c-&gt;xPos() + c-&gt;leftmostPosition(false);
             left = kMin(left, lp);
         }
@@ -395,7 +395,7 @@
     // a tiny rel div buried somewhere deep in our child tree.  In this case we have to get to
     // the abs div.
     for (RenderObject *c = firstChild(); c; c = c-&gt;nextSibling()) {
-        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText()) {
+        if (!c-&gt;isFloatingOrPositioned() &amp;&amp; !c-&gt;isText() &amp;&amp; !c-&gt;isInlineFlow()) {
             int hp = c-&gt;yPos() + c-&gt;highestPosition(false);
             top = kMin(top, hp);
         }
--- branches/KDE/3.5/kdelibs/khtml/rendering/render_layer.cpp #591049:591050
@@ -720,12 +720,12 @@
 
 void RenderLayer::checkScrollbarsAfterLayout()
 {
-    int rightPos = m_object-&gt;rightmostPosition(true, false);
-    int bottomPos = m_object-&gt;lowestPosition(true, false);
+    int rightPos = m_object-&gt;rightmostPosition(true);
+    int bottomPos = m_object-&gt;lowestPosition(true);
     
 /*  TODO
-    m_scrollLeft = m_object-&gt;leftmostPosition(true, false);
-    m_scrollTop = m_object-&gt;highestPosition(true, false);
+    m_scrollLeft = m_object-&gt;leftmostPosition(true);
+    m_scrollTop = m_object-&gt;highestPosition(true);
 */
 
     int clientWidth = m_object-&gt;clientWidth();
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>17576</attachid>
            <date>2006-08-31 03:30:04 +0000</date>
            <delta_ts>2006-08-31 03:30:04 +0000</delta_ts>
            <desc>padding-bottom not respected</desc>
            <filename>testcase-padding.html</filename>
            <type>text/html</type>
            <size>3711</size>
            <attacher name="Florian Ehrenthal">dizzinger</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCFET0NUWVBFIGh0bWwgUFVC
TElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cu
dzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgo8aHRtbCB4bWxu
cz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cgo8aGVhZD4KICA8dGl0bGU+PC90aXRs
ZT4KPC9oZWFkPgo8Ym9keT4KPGRpdiBzdHlsZT0id2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4
OyBib3JkZXI6IDFweCBzb2xpZCByZWQ7IG92ZXJmbG93OiBhdXRvOyBwYWRkaW5nOiA1MHB4OyB0
ZXh0LWFsaWduOiBqdXN0aWZ5OyI+CkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0
ZXR1ZXIgYWRpcGlzY2luZyBlbGl0LiBEdWlzIGludGVyZHVtIG5pc2wgdXQgZmVsaXMuIEFsaXF1
YW0gdnVscHV0YXRlIGxlY3R1cy4gTmFtIGFudGUuIFByb2luIGNvbnNlY3RldHVlciBkdWkgYmli
ZW5kdW0gb3JjaS4gU2VkIGV1IGxhY3VzIHZpdGFlIG1hZ25hIHBsYWNlcmF0IGx1Y3R1cy4gQ3Jh
cyBpZCBwZWRlLiBQZWxsZW50ZXNxdWUgbGliZXJvIG5lcXVlLCB0ZW1wb3IgZXUsIGlhY3VsaXMg
cXVpcywgcG9ydGEgaW4sIGVyYXQuIEluIG5vbnVtbXkuIE51bGxhIGZhY2lsaXNpLiBNYXVyaXMg
cHJldGl1bSBtb2xsaXMgdG9ydG9yLiBVdCBmcmluZ2lsbGEgdHJpc3RpcXVlIGRpYW0uIERvbmVj
IGVsZW1lbnR1bSB0b3J0b3IgbGFjaW5pYSBtYXVyaXMuIFV0IGxlY3R1cyBtYXNzYSwgc2NlbGVy
aXNxdWUgaWQsIGVsZW1lbnR1bSB2ZWwsIHNvbGxpY2l0dWRpbiBhLCBsb3JlbS4gUHJvaW4gY3Vy
c3VzIGxlbyBzZWQgZXJhdC4gUXVpc3F1ZSBub24gbWF1cmlzIGF0IGVzdCBncmF2aWRhIHZlaGlj
dWxhLiBQaGFzZWxsdXMgaW4gcmlzdXMuIEluIG5vbiBsaWJlcm8gYWMgaXBzdW0gZWxlbWVudHVt
IHNvbGxpY2l0dWRpbi4gTWF1cmlzIGxvYm9ydGlzLiBDcmFzIG1hdHRpcyBtYXR0aXMgdG9ydG9y
LiBTZWQgbWFnbmEuIApTZWQgYWMgYW50ZSBlZ2V0IGFyY3UgbWF0dGlzIGNvbW1vZG8uIEV0aWFt
IGFjIGxlY3R1cy4gU2VkIHV0IGF1Z3VlLiBBbGlxdWFtIGxhY2luaWEuIE51bGxhIGVsaXQgdXJu
YSwgcGxhY2VyYXQgdXQsIG1vbGxpcyBhdCwgdmVzdGlidWx1bSBmYWNpbGlzaXMsIG1hdXJpcy4g
U3VzcGVuZGlzc2UgbWF0dGlzIHB1cnVzIG5lYyBwdXJ1cy4gUXVpc3F1ZSBjb252YWxsaXMgc2Vt
IHF1aXMgYXVndWUuIE1vcmJpIG1hbGVzdWFkYSB0ZW1wb3IgbG9yZW0uIE51bmMgb3JuYXJlIGp1
c3RvIHNpdCBhbWV0IGxpYmVyby4gVXQgdm9sdXRwYXQgbWV0dXMgcXVpcyB0b3J0b3IuIENyYXMg
bmliaC4gRG9uZWMgZmVybWVudHVtLiBNb3JiaSBsZWN0dXMuIFByb2luIHB1bHZpbmFyIGxpYmVy
byBub24gdXJuYS4gRG9uZWMgc2VtcGVyLiBOdW5jIHBlbGxlbnRlc3F1ZSBxdWFtIGluIGVzdC4g
RHVpcyBzYWdpdHRpcyB2ZXN0aWJ1bHVtIHNlbS4gUGhhc2VsbHVzIHNlZCBsZW8gbmVjIGZlbGlz
IGJpYmVuZHVtIHBsYWNlcmF0LiAKU3VzcGVuZGlzc2UgbnVsbGEuIE1vcmJpIHRvcnRvci4gUHJv
aW4gZmV1Z2lhdCwgbnVuYyBpbiBhbGlxdWFtIGV1aXNtb2QsIG1pIGVyYXQgbWFsZXN1YWRhIHVy
bmEsIGFjIHBsYWNlcmF0IG5pYmggdG9ydG9yIGFjIGFyY3UuIFNlZCBwZWRlIHB1cnVzLCBzY2Vs
ZXJpc3F1ZSBuZWMsIG1vbGVzdGllIGV0LCBjb21tb2RvIHF1aXMsIGxvcmVtLiBEdWlzIGVzdCBl
bGl0LCBlZ2VzdGFzIGluLCBncmF2aWRhIHV0LCBmYXVjaWJ1cyBuZWMsIGRvbG9yLiBQaGFzZWxs
dXMgZHVpIHF1YW0sIGJpYmVuZHVtIHF1aXMsIGNvbnNlY3RldHVlciB2ZWwsIHZhcml1cyBxdWlz
LCBxdWFtLiBOdWxsYSBldWlzbW9kIGFudGUgYmxhbmRpdCBuaWJoLiBEdWlzIHVsdHJpY2llcyBl
cm9zLiBJbiB1dCBsaWd1bGEuIE51bGxhIHBvcnRhIHNvbGxpY2l0dWRpbiBtYWduYS4gQWxpcXVh
bSB0ZW1wb3IsIG1hc3NhIGV0IGZhY2lsaXNpcyBzYWdpdHRpcywgaXBzdW0gZXJhdCBzZW1wZXIg
b3JjaSwgYXQgcHJldGl1bSBsYWN1cyBuZXF1ZSBub24ganVzdG8uIERvbmVjIHF1aXMgZG9sb3Iu
IFByb2luIHZ1bHB1dGF0ZS4gUGVsbGVudGVzcXVlIG5vbiB0ZWxsdXMgdmVsIHB1cnVzIHN1c2Np
cGl0IHN1c2NpcGl0LiBQZWxsZW50ZXNxdWUgY29uc2VjdGV0dWVyIGdyYXZpZGEgdXJuYS4gU2Vk
IGlwc3VtIHBlZGUsIHRpbmNpZHVudCBpbiwgcGxhY2VyYXQgcXVpcywgZWxlbWVudHVtIGluLCBu
dWxsYS4gRXRpYW0gaW4gZGlhbSBldCBlbGl0IHBvcnR0aXRvciBmcmluZ2lsbGEuIE1vcmJpIGZh
Y2lsaXNpcyBtYXVyaXMgdml0YWUgcGVkZS4gCkZ1c2NlIGVyYXQgbGVvLCB2dWxwdXRhdGUgdml0
YWUsIHNvbGxpY2l0dWRpbiBldSwgc2VtcGVyIHNpdCBhbWV0LCBtYXNzYS4gUGVsbGVudGVzcXVl
IGRvbG9yIGVuaW0sIGVsZW1lbnR1bSBzZWQsIHRpbmNpZHVudCBhdCwgYXVjdG9yIGV0LCB0ZWxs
dXMuIE1vcmJpIG5pYmguIFByYWVzZW50IGNvbnNlY3RldHVlciBzb2RhbGVzIHVybmEuIFByYWVz
ZW50IGNvbnZhbGxpcyBzb2xsaWNpdHVkaW4gbmliaC4gQWVuZWFuIG5pc2wgbG9yZW0sIG1vbGxp
cyBzaXQgYW1ldCwgY29tbW9kbyBpbiwgcHVsdmluYXIgbmVjLCBvcmNpLiBDdXJhYml0dXIgdXJu
YSBxdWFtLCB1bHRyaWNlcyBpbiwgY29udmFsbGlzIGlkLCB2aXZlcnJhIGVnZXQsIGxlby4gSW50
ZWdlciB0dXJwaXMgbWV0dXMsIGx1Y3R1cyBpbiwgdm9sdXRwYXQgdml0YWUsIG1vbGxpcyBzaXQg
YW1ldCwgZXJvcy4gRnVzY2UgYWNjdW1zYW4gcGVsbGVudGVzcXVlIHRvcnRvci4gTmFtIHZvbHV0
cGF0IHRlbGx1cyBxdWlzIGVsaXQuIFV0IHZpdmVycmEsIG51bGxhIGF0IHNjZWxlcmlzcXVlIGZh
dWNpYnVzLCBqdXN0byB0dXJwaXMgdWx0cmljZXMgb3JjaSwgc2VkIGJpYmVuZHVtIG5pc2wgbGli
ZXJvIGlkIG5pc2kuIEFlbmVhbiBzaXQgYW1ldCBhdWd1ZSB1dCBsaWJlcm8gY29uc2VjdGV0dWVy
IGZlcm1lbnR1bS4gSW50ZWdlciBuaXNsIGFyY3UsIHVsdHJpY2VzIHZpdGFlLCBldWlzbW9kIG5l
YywgdHJpc3RpcXVlIG5vbiwgdG9ydG9yLiBQZWxsZW50ZXNxdWUgaW4gdG9ydG9yIHV0IGFudGUg
Y29uZGltZW50dW0gcHJldGl1bS4gTmFtIGEgcGVkZSBldCBwZWRlIHBvc3VlcmUgZGljdHVtLiBG
dXNjZSBvcm5hcmUgbmlzaSBhdWN0b3IgZG9sb3IuIER1aXMgbWFzc2EgZG9sb3IsIHBvcnR0aXRv
ciBlZ2V0LCBsdWN0dXMgZXUsIHBlbGxlbnRlc3F1ZSBmcmluZ2lsbGEsIGVyYXQuIFByb2luIGF0
IHF1YW0uIER1aXMgbGlndWxhIHJpc3VzLCBhbGlxdWV0IGF0LCBjb25zZWN0ZXR1ZXIgZWdldCwg
cGVsbGVudGVzcXVlIGEsIGp1c3RvLiAKSW4gaGFjIGhhYml0YXNzZSBwbGF0ZWEgZGljdHVtc3Qu
IFBlbGxlbnRlc3F1ZSByaG9uY3VzIGlhY3VsaXMgZW5pbS4gTnVsbGEgcGhhcmV0cmEgc2VtIGV1
aXNtb2QgcXVhbS4gU2VkIGJsYW5kaXQuIFZlc3RpYnVsdW0gaWQganVzdG8gbmVjIGxlY3R1cyBy
dXRydW0gY29uc2VjdGV0dWVyLiBQcmFlc2VudCB0aW5jaWR1bnQgbWFzc2EgYXQgYW50ZS4gU2Vk
IG1vbGVzdGllIHRlbGx1cyBldSBpcHN1bSBtb2xsaXMgdWx0cmljZXMuIFByYWVzZW50IGEgbWFz
c2EuIFF1aXNxdWUgbGFjaW5pYS4gUXVpc3F1ZSB1bHRyaWNlcy4KPC9kaXY+Cgo8L2JvZHk+Cjwv
aHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>