Unreviewed, rolling out r111259.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2012 20:39:54 +0000 (20:39 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2012 20:39:54 +0000 (20:39 +0000)
http://trac.webkit.org/changeset/111259
https://bugs.webkit.org/show_bug.cgi?id=82650

Caused selection regression in calculations due to
misconstructed IntRectRegion. (Requested by mfenton on
#webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-03-29

* WebKitSupport/SelectionHandler.cpp:
(BlackBerry::WebKit::SelectionHandler::getConsolidatedRegionOfTextQuadsForSelection):

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

Source/WebKit/blackberry/ChangeLog
Source/WebKit/blackberry/WebKitSupport/SelectionHandler.cpp

index c7e7840..e34145f 100644 (file)
@@ -1,5 +1,18 @@
 2012-03-29  Sheriff Bot  <webkit.review.bot@gmail.com>
 
 2012-03-29  Sheriff Bot  <webkit.review.bot@gmail.com>
 
+        Unreviewed, rolling out r111259.
+        http://trac.webkit.org/changeset/111259
+        https://bugs.webkit.org/show_bug.cgi?id=82650
+
+        Caused selection regression in calculations due to
+        misconstructed IntRectRegion. (Requested by mfenton on
+        #webkit).
+
+        * WebKitSupport/SelectionHandler.cpp:
+        (BlackBerry::WebKit::SelectionHandler::getConsolidatedRegionOfTextQuadsForSelection):
+
+2012-03-29  Sheriff Bot  <webkit.review.bot@gmail.com>
+
         Unreviewed, rolling out r112553.
         http://trac.webkit.org/changeset/112553
         https://bugs.webkit.org/show_bug.cgi?id=82638
         Unreviewed, rolling out r112553.
         http://trac.webkit.org/changeset/112553
         https://bugs.webkit.org/show_bug.cgi?id=82638
index 631f667..06b92b6 100644 (file)
@@ -112,18 +112,15 @@ void SelectionHandler::getConsolidatedRegionOfTextQuadsForSelection(const Visibl
         // framePosition is in main frame coordinates.
         WebCore::IntPoint framePosition = m_webPage->frameOffset(m_webPage->focusedOrMainFrame());
 
         // framePosition is in main frame coordinates.
         WebCore::IntPoint framePosition = m_webPage->frameOffset(m_webPage->focusedOrMainFrame());
 
-        // Convert the text quads into a more platform friendy
-        // IntRectRegion and adjust for subframes.
-        std::vector<Platform::IntRect> adjustedIntRects;
-        Platform::IntRect selectionBoundingBox;
+        // The ranges rect list is based on render elements and may include multiple adjacent rects.
+        // Use IntRectRegion to consolidate these rects into bands as well as a container to pass
+        // to the client.
         for (unsigned i = 0; i < quadList.size(); i++) {
             WebCore::IntRect enclosingRect = quadList[i].enclosingBoundingBox();
             enclosingRect.intersect(frameRect);
             enclosingRect.move(framePosition.x(), framePosition.y());
         for (unsigned i = 0; i < quadList.size(); i++) {
             WebCore::IntRect enclosingRect = quadList[i].enclosingBoundingBox();
             enclosingRect.intersect(frameRect);
             enclosingRect.move(framePosition.x(), framePosition.y());
-            adjustedIntRects.push_back(enclosingRect);
-            selectionBoundingBox = unionOfRects(enclosingRect, selectionBoundingBox);
+            region = unionRegions(region, IntRectRegion(enclosingRect));
         }
         }
-        region = IntRectRegion(selectionBoundingBox, adjustedIntRects.size(), adjustedIntRects);
     }
 }
 
     }
 }