Fix by Mitz Pettel, reviewed by Eric.
authorap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Apr 2006 17:02:17 +0000 (17:02 +0000)
committerap <ap@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 10 Apr 2006 17:02:17 +0000 (17:02 +0000)
        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8295
          Dictionary pop-up panel targets the wrong word in a scrolled IFRAME

        * kwq/WebCoreAXObject.mm:
        (-[WebCoreAXObject doAXTextMarkerForPosition:]): Removed the addition of scroll
        offsets, which is redundant for scrolled views, then changed the first view
        to be the document's scrolled view instead of its scroll view (all subsequent views were
        already scrolled views).
        * manual-tests/dictionary-scrolled-iframe.html: Added.

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

WebCore/ChangeLog
WebCore/kwq/WebCoreAXObject.mm
WebCore/manual-tests/dictionary-scrolled-iframe.html [new file with mode: 0644]

index f78fe3bbd27bcfd68c942229ac7f7edad99771ee..2b113229bd9c5dfb95b417f90240318bd71ee595 100644 (file)
@@ -1,3 +1,17 @@
+2006-04-10  Mitz Pettel  <opendarwin.org@mitzpettel.com>
+
+        Reviewed by Eric, landed by ap.
+
+        - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=8295
+          Dictionary pop-up panel targets the wrong word in a scrolled IFRAME
+
+        * kwq/WebCoreAXObject.mm:
+        (-[WebCoreAXObject doAXTextMarkerForPosition:]): Removed the addition of scroll
+        offsets, which is redundant for scrolled views, then changed the first view
+        to be the document's scrolled view instead of its scroll view (all subsequent views were
+        already scrolled views).
+        * manual-tests/dictionary-scrolled-iframe.html: Added.
+
 2006-04-09  Alexey Proskuryakov  <ap@nypop.com>
 
         Reviewed by Darin.
index c39cdb0a3bd2a1d01d4b34d8ee1adf71121e17f1..fb29d8aef813c76209cade6e72e0b8ce843b7493 100644 (file)
@@ -1047,7 +1047,7 @@ static IntRect boundingBoxRect(RenderObject* obj)
 {
     // convert absolute point to view coordinates
     FrameView *docView = [self topView];
-    NSView *view = docView->getView();
+    NSView *view = docView->getDocumentView();
     RenderObject *renderer = [self topRenderer];
     Node *innerNode = NULL;
     NSPoint ourpoint;
@@ -1057,8 +1057,6 @@ static IntRect boundingBoxRect(RenderObject* obj)
         // ask the document layer to hitTest
         NSPoint windowCoord = [[view window] convertScreenToBase: point];
         ourpoint = [view convertPoint:windowCoord fromView:nil];
-        ourpoint.x += docView->contentsX();
-        ourpoint.y += docView->contentsY();
         
         RenderObject::NodeInfo nodeInfo(true, true);
         renderer->layer()->hitTest(nodeInfo, IntPoint(ourpoint));
diff --git a/WebCore/manual-tests/dictionary-scrolled-iframe.html b/WebCore/manual-tests/dictionary-scrolled-iframe.html
new file mode 100644 (file)
index 0000000..a9cea5d
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+        "http://www.w3.org/TR/html4/strict.dtd">
+<html lang="en">
+<head>
+</head>
+<body>
+<p><b>BUG ID:</b> <a href="http://bugzilla.opendarwin.org/show_bug.cgi?id=8295">Bugzilla bug 8295</a> Dictionary pop-up panel targets the wrong word in a scrolled IFRAME</p>
+
+<p id="test" style="background-color:skyblue; padding:3px;"><b>STEPS TO TEST:</b><br>
+1. Click the inner frame&rsquo;s down scroll arrow once.<br>
+2. Move the mouse pointer
+over &ldquo;target&rdquo;.<br>
+3. Press Command-Control-D to invoke the Dictionary pop-up panel.
+</p>
+
+<p id="success" style="background-color:palegreen; padding:3px;"><b>TEST PASS:</b> 
+The Dictionary pop-up panel will appear over &ldquo;target&rdquo;, giving its definition.
+</p>
+
+<p id="failure" style="background-color:#FF3300; padding:3px;"><b>TEST FAIL:</b>  
+The Dictionary pop-up panel will appear over &ldquo;failure&rdquo;, with the definition of failure.
+</p>
+
+<iframe style="background: #ffd;" src="data:text/html,Curabitur pretium, quam quis semper malesuada, est libero feugiat libero, vel fringilla orci nibh sed neque. Quisque eu nulla non nisi molestie accumsan. Etiam tellus urna, <span style=%22color: green;%22>target</span> ac, laoreet non, suscipit sed, sapien. Phasellus vehicula, sem at posuere tel failure, augue nibh molestie nisl, nec ullamcorper lacus ante vulputate pede. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris viverra augue vitae purus. Morbi sed sem. Donec dui nisi, ultrices non, pretium quis, hendrerit non, est. Donec tellus. Donec eget dui id eros pharetra rutrum. Suspendisse sodales lectus sit amet nulla. Morbi tortor arcu, convallis blandit, elementum eu, aliquet a, tellus.
+"></iframe>
+
+</body>
+</html>