Title: [172344] trunk/Source/WebKit2
Revision
172344
Author
[email protected]
Date
2014-08-08 09:19:37 -0700 (Fri, 08 Aug 2014)

Log Message

Services overlay dropdown is often in the wrong place with zoomed pages or horizontal scrolling
https://bugs.webkit.org/show_bug.cgi?id=135755
<rdar://problem/17907752>

Reviewed by Brady Eidson.

* WebProcess/WebPage/mac/ServicesOverlayController.mm:
(WebKit::ServicesOverlayController::establishHoveredTelephoneHighlight):
(WebKit::ServicesOverlayController::maybeCreateSelectionHighlight):
DDHighlightCreateWithRectsInVisibleRectWithStyleAndDirection adjusts the
location of the button based on the visible rect, trying to keep the button visible.

We're handing it the wrong visible rect, though, not taking scrolling into account.

This leads to pages that scroll horizontally showing the button on the left
even if there's space for it on the right, or sometimes not showing it at all.

Instead, provide the actual main FrameView visible rect; the same coordinate
space that the highlight rects are provided in.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (172343 => 172344)


--- trunk/Source/WebKit2/ChangeLog	2014-08-08 16:18:46 UTC (rev 172343)
+++ trunk/Source/WebKit2/ChangeLog	2014-08-08 16:19:37 UTC (rev 172344)
@@ -1,5 +1,27 @@
 2014-08-08  Timothy Horton  <[email protected]>
 
+        Services overlay dropdown is often in the wrong place with zoomed pages or horizontal scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=135755
+        <rdar://problem/17907752>
+
+        Reviewed by Brady Eidson.
+
+        * WebProcess/WebPage/mac/ServicesOverlayController.mm:
+        (WebKit::ServicesOverlayController::establishHoveredTelephoneHighlight):
+        (WebKit::ServicesOverlayController::maybeCreateSelectionHighlight):
+        DDHighlightCreateWithRectsInVisibleRectWithStyleAndDirection adjusts the
+        location of the button based on the visible rect, trying to keep the button visible.
+
+        We're handing it the wrong visible rect, though, not taking scrolling into account.
+
+        This leads to pages that scroll horizontally showing the button on the left
+        even if there's space for it on the right, or sometimes not showing it at all.
+
+        Instead, provide the actual main FrameView visible rect; the same coordinate
+        space that the highlight rects are provided in.
+
+2014-08-08  Timothy Horton  <[email protected]>
+
         Additional items added to selection services menus are misaligned
         https://bugs.webkit.org/show_bug.cgi?id=135747
         <rdar://problem/17933167>

Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/ServicesOverlayController.mm (172343 => 172344)


--- trunk/Source/WebKit2/WebProcess/WebPage/mac/ServicesOverlayController.mm	2014-08-08 16:18:46 UTC (rev 172343)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/ServicesOverlayController.mm	2014-08-08 16:19:37 UTC (rev 172344)
@@ -431,7 +431,7 @@
             rect.setLocation(mainFrameView.windowToContents(viewForRange->contentsToWindow(rect.location())));
 
             CGRect cgRect = rect;
-            m_telephoneNumberHighlights[i] = adoptCF(DDHighlightCreateWithRectsInVisibleRectWithStyleAndDirection(nullptr, &cgRect, 1, viewForRange->boundsRect(), DDHighlightOutlineWithArrow, YES, NSWritingDirectionNatural, NO, YES));
+            m_telephoneNumberHighlights[i] = adoptCF(DDHighlightCreateWithRectsInVisibleRectWithStyleAndDirection(nullptr, &cgRect, 1, mainFrameView.visibleContentRect(), DDHighlightOutlineWithArrow, YES, NSWritingDirectionNatural, NO, YES));
         }
 
         if (!mouseIsOverHighlight(m_telephoneNumberHighlights[i].get(), mouseIsOverButton))
@@ -460,8 +460,8 @@
         cgRects.append((CGRect)pixelSnappedIntRect(rect));
 
     if (!cgRects.isEmpty()) {
-        CGRect bounds = m_webPage->corePage()->mainFrame().view()->boundsRect();
-        m_selectionHighlight = adoptCF(DDHighlightCreateWithRectsInVisibleRectWithStyleAndDirection(nullptr, cgRects.begin(), cgRects.size(), bounds, DDHighlightNoOutlineWithArrow, YES, NSWritingDirectionNatural, NO, YES));
+        CGRect visibleRect = m_webPage->corePage()->mainFrame().view()->visibleContentRect();
+        m_selectionHighlight = adoptCF(DDHighlightCreateWithRectsInVisibleRectWithStyleAndDirection(nullptr, cgRects.begin(), cgRects.size(), visibleRect, DDHighlightNoOutlineWithArrow, YES, NSWritingDirectionNatural, NO, YES));
 
         m_servicesOverlay->setNeedsDisplay();
     }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to