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