Title: [182087] trunk/Source/WebKit2
Revision
182087
Author
[email protected]
Date
2015-03-27 15:56:15 -0700 (Fri, 27 Mar 2015)

Log Message

Safari clears selection when its window gets activated via mouse down
https://bugs.webkit.org/show_bug.cgi?id=143157

Reviewed by Anders Carlsson.

The bug was caused by PlatformMouseEvent created in WebKit2 not having its event number
even though we were correctly calling setActivationEventNumber in WebPage::acceptsFirstMouse.

Fixed the bug by storing [NSEvent eventNumber] in WebMouseEvent on Mac in WebKit2 as done in WebKit1.

* Shared/WebEvent.h:
(WebKit::WebMouseEvent::eventNumber):
* Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
* Shared/WebMouseEvent.cpp:
(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode):
(WebKit::WebMouseEvent::decode):
* Shared/mac/WebEventFactory.mm:
(WebKit::WebEventFactory::createWebMouseEvent):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (182086 => 182087)


--- trunk/Source/WebKit2/ChangeLog	2015-03-27 22:07:47 UTC (rev 182086)
+++ trunk/Source/WebKit2/ChangeLog	2015-03-27 22:56:15 UTC (rev 182087)
@@ -1,3 +1,26 @@
+2015-03-27  Ryosuke Niwa  <[email protected]>
+
+        Safari clears selection when its window gets activated via mouse down
+        https://bugs.webkit.org/show_bug.cgi?id=143157
+
+        Reviewed by Anders Carlsson.
+
+        The bug was caused by PlatformMouseEvent created in WebKit2 not having its event number
+        even though we were correctly calling setActivationEventNumber in WebPage::acceptsFirstMouse.
+
+        Fixed the bug by storing [NSEvent eventNumber] in WebMouseEvent on Mac in WebKit2 as done in WebKit1.
+
+        * Shared/WebEvent.h:
+        (WebKit::WebMouseEvent::eventNumber):
+        * Shared/WebEventConversion.cpp:
+        (WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):
+        * Shared/WebMouseEvent.cpp:
+        (WebKit::WebMouseEvent::WebMouseEvent):
+        (WebKit::WebMouseEvent::encode):
+        (WebKit::WebMouseEvent::decode):
+        * Shared/mac/WebEventFactory.mm:
+        (WebKit::WebEventFactory::createWebMouseEvent):
+
 2015-03-27  Anders Carlsson  <[email protected]>
 
         Only do the Connection::setShouldCloseConnectionOnMachExceptions() hack where necessary

Modified: trunk/Source/WebKit2/Shared/WebEvent.h (182086 => 182087)


--- trunk/Source/WebKit2/Shared/WebEvent.h	2015-03-27 22:07:47 UTC (rev 182086)
+++ trunk/Source/WebKit2/Shared/WebEvent.h	2015-03-27 22:56:15 UTC (rev 182087)
@@ -123,7 +123,11 @@
 
     WebMouseEvent();
 
+#if PLATFORM(MAC)
+    WebMouseEvent(Type, Button, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers, double timestamp, int eventNumber = -1);
+#else
     WebMouseEvent(Type, Button, const WebCore::IntPoint& position, const WebCore::IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers, double timestamp);
+#endif
 
     Button button() const { return static_cast<Button>(m_button); }
     const WebCore::IntPoint& position() const { return m_position; }
@@ -132,6 +136,9 @@
     float deltaY() const { return m_deltaY; }
     float deltaZ() const { return m_deltaZ; }
     int32_t clickCount() const { return m_clickCount; }
+#if PLATFORM(MAC)
+    int32_t eventNumber() const { return m_eventNumber; }
+#endif
 
     void encode(IPC::ArgumentEncoder&) const;
     static bool decode(IPC::ArgumentDecoder&, WebMouseEvent&);
@@ -146,6 +153,9 @@
     float m_deltaY;
     float m_deltaZ;
     int32_t m_clickCount;
+#if PLATFORM(MAC)
+    int32_t m_eventNumber;
+#endif
 };
 
 // FIXME: Move this class to its own header file.

Modified: trunk/Source/WebKit2/Shared/WebEventConversion.cpp (182086 => 182087)


--- trunk/Source/WebKit2/Shared/WebEventConversion.cpp	2015-03-27 22:07:47 UTC (rev 182086)
+++ trunk/Source/WebKit2/Shared/WebEventConversion.cpp	2015-03-27 22:56:15 UTC (rev 182087)
@@ -82,6 +82,9 @@
         m_position = webEvent.position();
         m_globalPosition = webEvent.globalPosition();
         m_clickCount = webEvent.clickCount();
+#if PLATFORM(MAC)
+        m_eventNumber = webEvent.eventNumber();
+#endif
 
         m_modifierFlags = 0;
         if (webEvent.shiftKey())

Modified: trunk/Source/WebKit2/Shared/WebMouseEvent.cpp (182086 => 182087)


--- trunk/Source/WebKit2/Shared/WebMouseEvent.cpp	2015-03-27 22:07:47 UTC (rev 182086)
+++ trunk/Source/WebKit2/Shared/WebMouseEvent.cpp	2015-03-27 22:56:15 UTC (rev 182087)
@@ -40,10 +40,17 @@
     , m_deltaY(0)
     , m_deltaZ(0)
     , m_clickCount(0)
+#if PLATFORM(MAC)
+    , m_eventNumber(-1)
+#endif
 {
 }
 
+#if PLATFORM(MAC)
+WebMouseEvent::WebMouseEvent(Type type, Button button, const IntPoint& position, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers modifiers, double timestamp, int eventNumber)
+#else
 WebMouseEvent::WebMouseEvent(Type type, Button button, const IntPoint& position, const IntPoint& globalPosition, float deltaX, float deltaY, float deltaZ, int clickCount, Modifiers modifiers, double timestamp)
+#endif
     : WebEvent(type, modifiers, timestamp)
     , m_button(button)
     , m_position(position)
@@ -52,6 +59,9 @@
     , m_deltaY(deltaY)
     , m_deltaZ(deltaZ)
     , m_clickCount(clickCount)
+#if PLATFORM(MAC)
+    , m_eventNumber(eventNumber)
+#endif
 {
     ASSERT(isMouseEventType(type));
 }
@@ -67,6 +77,9 @@
     encoder << m_deltaY;
     encoder << m_deltaZ;
     encoder << m_clickCount;
+#if PLATFORM(MAC)
+    encoder << m_eventNumber;
+#endif
 }
 
 bool WebMouseEvent::decode(IPC::ArgumentDecoder& decoder, WebMouseEvent& result)
@@ -88,6 +101,10 @@
         return false;
     if (!decoder.decode(result.m_clickCount))
         return false;
+#if PLATFORM(MAC)
+    if (!decoder.decode(result.m_eventNumber))
+        return false;
+#endif
 
     return true;
 }

Modified: trunk/Source/WebKit2/Shared/mac/WebEventFactory.mm (182086 => 182087)


--- trunk/Source/WebKit2/Shared/mac/WebEventFactory.mm	2015-03-27 22:07:47 UTC (rev 182086)
+++ trunk/Source/WebKit2/Shared/mac/WebEventFactory.mm	2015-03-27 22:56:15 UTC (rev 182087)
@@ -351,8 +351,9 @@
     int clickCount                          = clickCountForEvent(event);
     WebEvent::Modifiers modifiers           = modifiersForEvent(event);
     double timestamp                        = eventTimeStampSince1970(event);
+    int eventNumber                         = [event eventNumber];
 
-    return WebMouseEvent(type, button, IntPoint(position), IntPoint(globalPosition), deltaX, deltaY, deltaZ, clickCount, modifiers, timestamp);
+    return WebMouseEvent(type, button, IntPoint(position), IntPoint(globalPosition), deltaX, deltaY, deltaZ, clickCount, modifiers, timestamp, eventNumber);
 }
 
 WebWheelEvent WebEventFactory::createWebWheelEvent(NSEvent *event, NSView *windowView)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to