Reviewed by Maciej.
authorharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Aug 2005 23:38:40 +0000 (23:38 +0000)
committerharrison <harrison@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 19 Aug 2005 23:38:40 +0000 (23:38 +0000)
        Landed by David Harrison.

        Test cases added: Manual test because Darin saw no way to exercise the hit testing code from JavaScript.
manual-tests/onclick_in_noncontent.html: Added.

        - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=3662
          onClick event for TD element doesn't fire unless its contents are clicked

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::nodeAtPoint):
        Take the border extra into account when hit testing just as we do when
        painting the background of a table cell. OK for other renderers because
        they have a border extra of 0.

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/rendering/render_block.cpp
WebCore/manual-tests/onclick_in_noncontent.html [new file with mode: 0644]

index 05b2995..a969d99 100644 (file)
@@ -1,3 +1,20 @@
+2005-08-19  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+        Landed by David Harrison.
+        
+        Test cases added: Manual test because Darin saw no way to exercise the hit testing code from JavaScript.
+       manual-tests/onclick_in_noncontent.html: Added.
+
+        - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=3662
+          onClick event for TD element doesn't fire unless its contents are clicked
+
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::nodeAtPoint):
+        Take the border extra into account when hit testing just as we do when
+        painting the background of a table cell. OK for other renderers because
+        they have a border extra of 0.
+
 2005-08-19  Anders Carlsson  <andersca@mac.com>
 
         Reviewed by Darin.
index cc4c2da..0ef1ee9 100644 (file)
@@ -2530,7 +2530,8 @@ bool RenderBlock::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
 
     // Now hit test our background.
     if (!inlineFlow && (hitTestAction == HitTestBlockBackground || hitTestAction == HitTestChildBlockBackground)) {
-        QRect boundsRect(tx, ty, m_width, m_height);
+        int topExtra = borderTopExtra();
+        QRect boundsRect(tx, ty - topExtra, m_width, m_height + topExtra + borderBottomExtra());
         if (isRoot() || (style()->visibility() == VISIBLE && boundsRect.contains(_x, _y))) {
             setInnerNode(info);
             return true;
diff --git a/WebCore/manual-tests/onclick_in_noncontent.html b/WebCore/manual-tests/onclick_in_noncontent.html
new file mode 100644 (file)
index 0000000..9c14674
--- /dev/null
@@ -0,0 +1,19 @@
+<html>
+<head>
+<script>
+function displayAlert(element)
+{
+    alert('You clicked '+element.nodeName);
+}
+</script>
+</head>
+<body>
+    <table style="width:100px;height:100px;border:inset">
+        <tr>
+            <td onclick="displayAlert(this)">Content.</td>
+        </tr>
+    </table>
+    <p>Click anywhere inside the table element and you should get an alert telling you so.</p>
+    <p>Bugzilla 3662 was that clicking in non-content did not fire onclick handler.</p>
+</body>
+</html>
\ No newline at end of file