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

List:       kde-commits
Subject:    branches/KDE/4.0/kdelibs/khtml
From:       Maks Orlovich <maksim () kde ! org>
Date:       2008-01-18 23:41:57
Message-ID: 1200699717.692276.24270.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 763247 by orlovich:

- It helps to call the right method in the bindings
- Fix bug in getPreviousNode, and my complete botching of
getParentNode. Now acid3 test 6 passes (test 5 still needs work)


 M  +1 -1      ecma/kjs_traversal.cpp  
 M  +12 -7     xml/dom2_traversalimpl.cpp  


--- branches/KDE/4.0/kdelibs/khtml/ecma/kjs_traversal.cpp #763246:763247
@@ -273,7 +273,7 @@
     case DOMTreeWalker::NextSibling:
       return getDOMNode(exec,treeWalker.nextSibling());
     case DOMTreeWalker::PreviousNode:
-      return getDOMNode(exec,treeWalker.previousSibling());
+      return getDOMNode(exec,treeWalker.previousNode());
     case DOMTreeWalker::NextNode:
       return getDOMNode(exec,treeWalker.nextNode());
   }
--- branches/KDE/4.0/kdelibs/khtml/xml/dom2_traversalimpl.cpp #763246:763247
@@ -445,7 +445,7 @@
 
     NodePtr n = getPreviousSibling(m_currentNode);
     if (n) {
-        // Find the last kid in the tree's preorder traversal, if any,
+        // Find the last kid in the subtree's preorder traversal, if any,
         // by following the lastChild links.
         NodePtr desc = getLastChild(n);
         while (desc) {
@@ -455,7 +455,7 @@
         return n;
     }
 
-    return getParentNode(n);
+    return getParentNode(m_currentNode);
 }
 
 TreeWalkerImpl::NodePtr TreeWalkerImpl::getNextNode()
@@ -508,15 +508,20 @@
 
 TreeWalkerImpl::NodePtr TreeWalkerImpl::getParentNode(TreeWalkerImpl::NodePtr n)
 {
-    NodePtr cursor = n;
+    // Already on top of root's subtree tree...
+    if (n == m_rootNode)
+        return 0;
 
     // Walk up, to find the first visible node != n, until we run out of
     // document or into the root (which we don't have to be inside of!)
-    while (cursor && cursor != m_rootNode) {
-        if (cursor != n && isAccepted(cursor) == NodeFilter::FILTER_ACCEPT)
+    NodePtr cursor = n->parentNode();
+    while (cursor) {
+        if (isAccepted(cursor) == NodeFilter::FILTER_ACCEPT)
             return cursor;
-        else
-            cursor = cursor->parentNode();
+
+        if (cursor == m_rootNode) // We just checked root -- no where else to go up.
+            return 0;
+        cursor = cursor->parentNode();
     }
 
     return 0;
[prev in list] [next in list] [prev in thread] [next in thread] 

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