Fix for 4017204, apply the same fix to the base class nodeAtPoint that was already...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 22 Feb 2005 00:19:31 +0000 (00:19 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 22 Feb 2005 00:19:31 +0000 (00:19 +0000)
Skip elements with layers and inline flows.  Demoted <form>s can end up causing trouble otherwise.

        Reviewed by Richard Williamson

        * khtml/rendering/render_box.cpp:
        (RenderBox::nodeAtPoint):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8657 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/render_box.cpp

index 79e3fc4acb71d08d9fe18ceabf3a7f00fda557a5..b10938dd50b769e83975fedef3188c5e613b5500 100644 (file)
@@ -1,3 +1,13 @@
+2005-02-21  David Hyatt  <hyatt@apple.com>
+
+       Fix for 4017204, apply the same fix to the base class nodeAtPoint that was already applied to RenderBlock.
+       Skip elements with layers and inline flows.  Demoted <form>s can end up causing trouble otherwise.
+       
+        Reviewed by Richard Williamson
+
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::nodeAtPoint):
+
 2005-02-21  David Hyatt  <hyatt@apple.com>
 
        Fix for 4017033, CSS is being parsed twice.  Make sure to always validate the style attribute when it is
index f864511327fd3b1a5b992c3ee2890023247d3975..1a544dd5e06e6f77d97c74ac09b75596b80cc41d 100644 (file)
@@ -207,7 +207,9 @@ bool RenderBox::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
     _tx += m_x;
     _ty += m_y;
     for (RenderObject* child = lastChild(); child; child = child->previousSibling()) {
-        if (child->nodeAtPoint(info, _x, _y, _tx, _ty, hitTestAction)) {
+        // FIXME: We have to skip over inline flows, since they can show up inside table rows at the moment (a demoted inline <form> for example).  If we ever implement a
+        // table-specific hit-test method (which we should do for performance reasons anyway), then we can remove this check.
+        if (!child->layer() && !child->isInlineFlow() && child->nodeAtPoint(info, _x, _y, _tx, _ty, hitTestAction)) {
             setInnerNode(info);
             return true;
         }