Fix <rdar://problem/5278790> Hole for find-on-page match in subframe isn't clipped...
authoraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 Aug 2007 09:18:23 +0000 (09:18 +0000)
committeraroben <aroben@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 Aug 2007 09:18:23 +0000 (09:18 +0000)
        Reviewed by Maciej.

        * WebView.cpp:
        (WebView::rectsForTextMatches): Ported fix from r23586.

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

WebKit/win/ChangeLog
WebKit/win/WebView.cpp

index 16947c7fd7e296167d45798e3c370d514fa16276..377c68669548c5036390a341e8c22b242ff08fd5 100644 (file)
@@ -1,3 +1,12 @@
+2007-08-12  Adam Roben  <aroben@apple.com>
+
+        Fix <rdar://problem/5278790> Hole for find-on-page match in subframe isn't clipped by frame bounds
+
+        Reviewed by Maciej.
+
+        * WebView.cpp:
+        (WebView::rectsForTextMatches): Ported fix from r23586.
+
 2007-08-12  Adam Roben  <aroben@apple.com>
 
         Prevent an ASSERT on launch by initializing AtomicString in WebKitGraphics
index 856aa812f96bac9440391c10e431a5cc98f1f32d..800eac625916d3b9c57ce2b75b579a917fabd3d5 100644 (file)
@@ -2438,12 +2438,14 @@ HRESULT STDMETHODCALLTYPE WebView::rectsForTextMatches(
     WebCore::Frame* frame = m_page->mainFrame();
     do {
         if (Document* document = frame->document()) {
+            IntRect visibleRect = enclosingIntRect(frame->view()->visibleContentRect());
             Vector<IntRect> frameRects = document->renderedRectsForMarkers(DocumentMarker::TextMatch);
             IntPoint frameOffset(-frame->view()->scrollOffset().width(), -frame->view()->scrollOffset().height());
             frameOffset = frame->view()->convertToContainingWindow(frameOffset);
 
             Vector<IntRect>::iterator end = frameRects.end();
             for (Vector<IntRect>::iterator it = frameRects.begin(); it < end; it++) {
+                it->intersect(visibleRect);
                 it->move(frameOffset.x(), frameOffset.y());
                 allRects.append(*it);
             }