Layer code

David Hyatt hyatt at apple.com
Wed Sep 24 18:23:26 CEST 2003


I landed that layer patch I sent out a while back in the Safari tree 
with two minor changes.

(1) More hover crash fixing and removing a bogus optimization.  There 
is still a slight regression with this new hover code that I'm tracking 
down though.

Index: WebCore/khtml/rendering/render_layer.cpp
===================================================================
RCS file: 
/local/home/cvs/Labyrinth/WebCore/khtml/rendering/render_layer.cpp,v
retrieving revision 1.50
diff -u -p -r1.50 WebCore/khtml/rendering/render_layer.cpp
--- WebCore/khtml/rendering/render_layer.cpp    2003/09/19 22:54:38     
1.50
+++ WebCore/khtml/rendering/render_layer.cpp    2003/09/24 23:34:11
@@ -904,16 +919,14 @@ void RenderLayer::updateHoverActiveState
      DOM::DocumentImpl* doc = renderer()->document();
      DOM::NodeImpl* oldHoverNode = doc ? doc->hoverNode() : 0;
      DOM::NodeImpl* newHoverNode = info.innerNode();
-
-    if (oldHoverNode == newHoverNode && (!oldHoverNode || 
oldHoverNode->active() == info.active()))
-        return;

      // Update our current hover node.
-    info.innerNode()->getDocument()->setHoverNode(newHoverNode);
+    if (doc)
+        doc->setHoverNode(newHoverNode);

      // We have two different objects.  Fetch their renderers.
      RenderObject* oldHoverObj = oldHoverNode ? 
oldHoverNode->renderer() : 0;
-    RenderObject* newHoverObj = info.innerNode() ? 
info.innerNode()->renderer() : 0;
+    RenderObject* newHoverObj = newHoverNode ? 
newHoverNode->renderer() : 0;

      // Locate the common ancestor render object for the two renderers.
      RenderObject* ancestor = commonAncestor(oldHoverObj, newHoverObj);

(2) I dumped the changes to render_style.cpp for relative positioning 
in the diff method.   Making relative positioned objects do a repaint 
instead of a relayout is more involved, and although I still hope to do 
that eventually, there are too many issues with it to do that right 
now.

dave



More information about the Khtml-devel mailing list