Send mouse events to the banner for as long as the mouse button is down
authorandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Jun 2013 18:30:07 +0000 (18:30 +0000)
committerandersca@apple.com <andersca@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Jun 2013 18:30:07 +0000 (18:30 +0000)
https://bugs.webkit.org/show_bug.cgi?id=117161

Reviewed by Beth Dakin.

Keep track of whether the mouse was pressed in a banner and keep sending mouse events to it,
even if they are outside the banner's bounds for as long as the mouse is down.

* WebProcess/WebPage/PageBanner.h:
* WebProcess/WebPage/mac/PageBannerMac.mm:
(WebKit::PageBanner::PageBanner):
(WebKit::PageBanner::mouseEvent):

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

Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebPage/PageBanner.h
Source/WebKit2/WebProcess/WebPage/mac/PageBannerMac.mm

index e78b51e..2ced376 100644 (file)
@@ -1,3 +1,18 @@
+2013-06-03  Anders Carlsson  <andersca@apple.com>
+
+        Send mouse events to the banner for as long as the mouse button is down
+        https://bugs.webkit.org/show_bug.cgi?id=117161
+
+        Reviewed by Beth Dakin.
+
+        Keep track of whether the mouse was pressed in a banner and keep sending mouse events to it,
+        even if they are outside the banner's bounds for as long as the mouse is down.
+
+        * WebProcess/WebPage/PageBanner.h:
+        * WebProcess/WebPage/mac/PageBannerMac.mm:
+        (WebKit::PageBanner::PageBanner):
+        (WebKit::PageBanner::mouseEvent):
+
 2013-06-03  Sergio Correia  <sergio.correia@openbossa.org>
 
         [EFL][WK2] Process launcher uses system() for wrapping the WebProcess when using WEB_PROCESS_CMD_PREFIX
index a6a33bc..1fa0604 100644 (file)
@@ -84,6 +84,8 @@ private:
     Client* m_client;
     WebPage* m_webPage;
 
+    bool m_mouseDownInBanner;
+
 #if PLATFORM(MAC)
     RetainPtr<CALayer> m_layer;
     int m_height;
index 2a06e10..aed16ae 100644 (file)
@@ -43,6 +43,7 @@ PageBanner::PageBanner(CALayer *layer, int height, Client* client)
     : m_type(NotSet)
     , m_client(client)
     , m_webPage(0)
+    , m_mouseDownInBanner(false)
     , m_layer(layer)
     , m_height(height)
 {
@@ -110,9 +111,14 @@ bool PageBanner::mouseEvent(const WebMouseEvent& mouseEvent)
         ASSERT_NOT_REACHED();
     }
 
-    if (positionInBannerSpace.y() < 0 || positionInBannerSpace.y() > m_height)
+    if (!m_mouseDownInBanner && (positionInBannerSpace.y() < 0 || positionInBannerSpace.y() > m_height))
         return false;
 
+    if (mouseEvent.type() == WebEvent::MouseDown)
+        m_mouseDownInBanner = true;
+    else if (mouseEvent.type() == WebEvent::MouseUp)
+        m_mouseDownInBanner = false;
+
     return m_client->mouseEvent(this, mouseEvent.type(), mouseEvent.button(), positionInBannerSpace);
 }