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

List:       kde-commits
Subject:    kdelibs/khtml
From:       Germain Garand <germain () ebooksfrance ! com>
Date:       2005-03-03 11:20:59
Message-ID: 20050303112059.720ED1751E () office ! kde ! org
[Download RAW message or body]

CVS commit by ggarand: 

Mozilla/IE strict compatibility:
document.documentElement.scroll{Top,Left} concern the canvas, not the root block.

fix regression on linuxfr.org

BUG: 99380


  M +7 -0      ChangeLog   1.394
  M +30 -6     ecma/kjs_dom.cpp   1.186


--- kdelibs/khtml/ChangeLog  #1.393:1.394
@@ -1,2 +1,9 @@
+2005-03-03  Germain Garand  <germain@ebooksfrance.org>
+
+        * ecma/kjs_dom.cpp (getValueProperty/putValueProperty):
+        Mozilla/IE strict compatibility: document.documentElement.scroll{Top,Left}
+        concern the canvas, not the root block. 
+        Cf. http://www.quirksmode.org/viewport/compatibility.html
+
 2005-03-01  Allan Sandfeld Jensen <kde@carewolf.com>
 

--- kdelibs/khtml/ecma/kjs_dom.cpp  #1.185:1.186
@@ -293,7 +293,17 @@ Value DOMNode::getValueProperty(ExecStat
       return rend ? static_cast<Value>( Number(rend->scrollHeight()) ) : \
Undefined();  case ScrollLeft:
-      return Number( rend && rend->layer() ? rend->layer()->scrollXOffset() : 0 );
+      if (rend && rend->layer()) {
+          if (rend->isRoot() && !rend->style()->hidesOverflow())
+              return Number( node.ownerDocument().view() ? \
node.ownerDocument().view()->contentsX() : 0); +          return Number( \
rend->layer()->scrollXOffset() ); +      }
+      return Number( 0 );
     case ScrollTop:
-      return Number( rend && rend->layer() ? rend->layer()->scrollYOffset() : 0 );
+      if (rend && rend->layer()) {
+          if (rend->isRoot() && !rend->style()->hidesOverflow())
+              return Number( node.ownerDocument().view() ? \
node.ownerDocument().view()->contentsY() : 0); +          return Number( \
rend->layer()->scrollYOffset() ); +      }
+      return Number( 0 );
     default:
       kdDebug(6070) << "WARNING: Unhandled token in DOMNode::getValueProperty : " << \
token << endl; @@ -394,12 +404,26 @@ void DOMNode::putValueProperty(ExecState
   case ScrollTop: {
     khtml::RenderObject *rend = node.handle() ? node.handle()->renderer() : 0L;
-    if (rend && rend->layer() && rend->style()->hidesOverflow())
+    if (rend && rend->layer()) {
+        if (rend->style()->hidesOverflow())
         rend->layer()->scrollToYOffset(value.toInt32(exec));
+        else if (rend->isRoot()) {
+            QScrollView* sview = node.ownerDocument().view();
+            if (sview)
+                sview->setContentsPos(sview->contentsX(), value.toInt32(exec));
+        }
+    }       
     break;
   }
   case ScrollLeft: {
     khtml::RenderObject *rend = node.handle() ? node.handle()->renderer() : 0L;
-    if (rend && rend->layer() && rend->style()->hidesOverflow())
+    if (rend && rend->layer()) {
+        if (rend->style()->hidesOverflow())
       rend->layer()->scrollToXOffset(value.toInt32(exec));
+        else if (rend->isRoot()) {
+            QScrollView* sview = node.ownerDocument().view();
+            if (sview)
+                sview->setContentsPos(value.toInt32(exec), sview->contentsY());
+        }
+    }
     break;
   }


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

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