Unreviewed, rolling out r246467.
authorcarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 17 Jun 2019 08:52:29 +0000 (08:52 +0000)
committercarlosgc@webkit.org <carlosgc@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 17 Jun 2019 08:52:29 +0000 (08:52 +0000)
It broke scrolling with mouse wheel

Reverted changeset:

"[GTK] Stop accessing GdkEvent fields when possible"
https://bugs.webkit.org/show_bug.cgi?id=198829
https://trac.webkit.org/changeset/246467

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

14 files changed:
Source/WebCore/ChangeLog
Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp
Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp
Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp
Source/WebKit/ChangeLog
Source/WebKit/Shared/gtk/WebEventFactory.cpp
Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp
Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp
Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp
Source/WebKit/UIProcess/gtk/GestureController.cpp
Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp
Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp
Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp
Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp

index e998e56..4de04ad 100644 (file)
@@ -1,3 +1,15 @@
+2019-06-17  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        Unreviewed, rolling out r246467.
+
+        It broke scrolling with mouse wheel
+
+        Reverted changeset:
+
+        "[GTK] Stop accessing GdkEvent fields when possible"
+        https://bugs.webkit.org/show_bug.cgi?id=198829
+        https://trac.webkit.org/changeset/246467
+
 2019-06-16  Darin Adler  <darin@apple.com>
 
         Convert some uses of fixed width and fixed precision floating point formatting to use shortest instead
index 81a7472..5b67a59 100644 (file)
@@ -1324,33 +1324,21 @@ String PlatformKeyboardEvent::singleCharacterString(unsigned val)
 
 static PlatformEvent::Type eventTypeForGdkKeyEvent(GdkEventKey* event)
 {
-#if GTK_CHECK_VERSION(3, 10, 0)
-    return gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)) == GDK_KEY_RELEASE ? PlatformEvent::KeyUp : PlatformEvent::KeyDown;
-#else
     return event->type == GDK_KEY_RELEASE ? PlatformEvent::KeyUp : PlatformEvent::KeyDown;
-#endif
 }
 
 static OptionSet<PlatformEvent::Modifier> modifiersForGdkKeyEvent(GdkEventKey* event)
 {
-    GdkModifierType state;
-    guint keyval;
     OptionSet<PlatformEvent::Modifier> modifiers;
-    gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state);
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-#else
-    keyval = event->keyval;
-#endif
-    if (state & GDK_SHIFT_MASK || keyval == GDK_KEY_3270_BackTab)
+    if (event->state & GDK_SHIFT_MASK || event->keyval == GDK_KEY_3270_BackTab)
         modifiers.add(PlatformEvent::Modifier::ShiftKey);
-    if (state & GDK_CONTROL_MASK)
+    if (event->state & GDK_CONTROL_MASK)
         modifiers.add(PlatformEvent::Modifier::ControlKey);
-    if (state & GDK_MOD1_MASK)
+    if (event->state & GDK_MOD1_MASK)
         modifiers.add(PlatformEvent::Modifier::AltKey);
-    if (state & GDK_META_MASK)
+    if (event->state & GDK_META_MASK)
         modifiers.add(PlatformEvent::Modifier::MetaKey);
-    if (state & GDK_LOCK_MASK)
+    if (event->state & GDK_LOCK_MASK)
         modifiers.add(PlatformEvent::Modifier::CapsLockKey);
     return modifiers;
 }
@@ -1358,30 +1346,19 @@ static OptionSet<PlatformEvent::Modifier> modifiersForGdkKeyEvent(GdkEventKey* e
 // Keep this in sync with the other platform event constructors
 PlatformKeyboardEvent::PlatformKeyboardEvent(GdkEventKey* event, const CompositionResults& compositionResults)
     : PlatformEvent(eventTypeForGdkKeyEvent(event), modifiersForGdkKeyEvent(event), wallTimeForEvent(event))
+    , m_text(compositionResults.simpleString.length() ? compositionResults.simpleString : singleCharacterString(event->keyval))
+    , m_unmodifiedText(m_text)
+    , m_key(keyValueForGdkKeyCode(event->keyval))
+    , m_code(keyCodeForHardwareKeyCode(event->hardware_keycode))
+    , m_keyIdentifier(keyIdentifierForGdkKeyCode(event->keyval))
+    , m_windowsVirtualKeyCode(windowsKeyCodeForGdkKeyCode(event->keyval))
     , m_handledByInputMethod(false)
     , m_autoRepeat(false)
+    , m_isKeypad(event->keyval >= GDK_KEY_KP_Space && event->keyval <= GDK_KEY_KP_9)
     , m_isSystemKey(false)
     , m_gdkEventKey(event)
     , m_compositionResults(compositionResults)
 {
-    guint keyval;
-    guint16 keycode;
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-    gdk_event_get_keycode(reinterpret_cast<GdkEvent*>(event), &keycode);
-#else
-    keyval = event->keyval;
-    keycode = event->hardware_keycode;
-#endif
-
-    m_text = compositionResults.simpleString.length() ? compositionResults.simpleString : singleCharacterString(keyval);
-    m_unmodifiedText = m_text;
-    m_key = keyValueForGdkKeyCode(keyval);
-    m_code = keyCodeForHardwareKeyCode(keycode);
-    m_keyIdentifier = keyIdentifierForGdkKeyCode(keyval);
-    m_windowsVirtualKeyCode = windowsKeyCodeForGdkKeyCode(keyval);
-    m_isKeypad = keyval >= GDK_KEY_KP_Space && keyval <= GDK_KEY_KP_9;
-
     // To match the behavior of IE, we return VK_PROCESSKEY for keys that triggered composition results.
     if (compositionResults.compositionUpdated())
         m_windowsVirtualKeyCode = VK_PROCESSKEY;
index 8ee2be4..4fba3bd 100644 (file)
@@ -39,64 +39,45 @@ namespace WebCore {
 // Keep this in sync with the other platform event constructors
 PlatformMouseEvent::PlatformMouseEvent(GdkEventButton* event)
 {
-    gdouble x, y, rootX, rootY;
-    GdkModifierType state;
-    guint button;
-
-    gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y);
-    gdk_event_get_root_coords(reinterpret_cast<GdkEvent*>(event), &rootX, &rootY);
-    gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state);
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_button(reinterpret_cast<GdkEvent*>(event), &button);
-#else
-    button = event->button;
-#endif
-
     m_timestamp = wallTimeForEvent(event);
-    m_position = IntPoint(static_cast<int>(x), static_cast<int>(y));
-    m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY));
+    m_position = IntPoint((int)event->x, (int)event->y);
+    m_globalPosition = IntPoint((int)event->x_root, (int)event->y_root);
     m_button = NoButton;
     m_clickCount = 0;
     m_modifierFlags = 0;
 
-    if (state & GDK_SHIFT_MASK)
+    if (event->state & GDK_SHIFT_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ShiftKey);
-    if (state & GDK_CONTROL_MASK)
+    if (event->state & GDK_CONTROL_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ControlKey);
-    if (state & GDK_MOD1_MASK)
+    if (event->state & GDK_MOD1_MASK)
         m_modifiers.add(PlatformEvent::Modifier::AltKey);
-    if (state & GDK_META_MASK)
+    if (event->state & GDK_META_MASK)
         m_modifiers.add(PlatformEvent::Modifier::MetaKey);
-    if (PlatformKeyboardEvent::modifiersContainCapsLock(state))
+    if (PlatformKeyboardEvent::modifiersContainCapsLock(event->state))
         m_modifiers.add(PlatformEvent::Modifier::CapsLockKey);
 
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event));
-#else
-    GdkEventType type = event->type;
-#endif
-
-    switch (type) {
+    switch (event->type) {
     case GDK_BUTTON_PRESS:
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS:
     case GDK_BUTTON_RELEASE:
         m_type = PlatformEvent::MousePressed;
-        if (type == GDK_BUTTON_RELEASE) {
+        if (event->type == GDK_BUTTON_RELEASE) {
             m_type = PlatformEvent::MouseReleased;
             m_clickCount = 0;
-        } else if (type == GDK_BUTTON_PRESS)
+        } else if (event->type == GDK_BUTTON_PRESS)
             m_clickCount = 1;
-        else if (type == GDK_2BUTTON_PRESS)
+        else if (event->type == GDK_2BUTTON_PRESS)
             m_clickCount = 2;
-        else if (type == GDK_3BUTTON_PRESS)
+        else if (event->type == GDK_3BUTTON_PRESS)
             m_clickCount = 3;
 
-        if (button == 1)
+        if (event->button == 1)
             m_button = LeftButton;
-        else if (button == 2)
+        else if (event->button == 2)
             m_button = MiddleButton;
-        else if (button == 3)
+        else if (event->button == 3)
             m_button = RightButton;
         break;
 
@@ -107,36 +88,25 @@ PlatformMouseEvent::PlatformMouseEvent(GdkEventButton* event)
 
 PlatformMouseEvent::PlatformMouseEvent(GdkEventMotion* motion)
 {
-    gdouble x, y, rootX, rootY;
-    GdkModifierType state;
-    gdk_event_get_coords(reinterpret_cast<GdkEvent*>(motion), &x, &y);
-    gdk_event_get_root_coords(reinterpret_cast<GdkEvent*>(motion), &rootX, &rootY);
-    gdk_event_get_state(reinterpret_cast<GdkEvent*>(motion), &state);
-    m_position = IntPoint(static_cast<int>(x), static_cast<int>(y));
-    m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY));
     m_timestamp = wallTimeForEvent(motion);
+    m_position = IntPoint((int)motion->x, (int)motion->y);
+    m_globalPosition = IntPoint((int)motion->x_root, (int)motion->y_root);
     m_button = NoButton;
     m_clickCount = 0;
     m_modifierFlags = 0;
 
-    if (state & GDK_SHIFT_MASK)
+    if (motion->state & GDK_SHIFT_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ShiftKey);
-    if (state & GDK_CONTROL_MASK)
+    if (motion->state & GDK_CONTROL_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ControlKey);
-    if (state & GDK_MOD1_MASK)
+    if (motion->state & GDK_MOD1_MASK)
         m_modifiers.add(PlatformEvent::Modifier::AltKey);
-    if (state & GDK_META_MASK)
+    if (motion->state & GDK_META_MASK)
         m_modifiers.add(PlatformEvent::Modifier::MetaKey);
-    if (PlatformKeyboardEvent::modifiersContainCapsLock(state))
+    if (PlatformKeyboardEvent::modifiersContainCapsLock(motion->state))
         m_modifiers.add(PlatformEvent::Modifier::CapsLockKey);
 
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(motion));
-#else
-    GdkEventType type = motion->type;
-#endif
-
-    switch (type) {
+    switch (motion->type) {
     case GDK_MOTION_NOTIFY:
         m_type = PlatformEvent::MouseMoved;
         m_button = NoButton;
@@ -146,11 +116,11 @@ PlatformMouseEvent::PlatformMouseEvent(GdkEventMotion* motion)
         ASSERT_NOT_REACHED();
     };
 
-    if (state & GDK_BUTTON1_MASK)
+    if (motion->state & GDK_BUTTON1_MASK)
         m_button = LeftButton;
-    else if (state & GDK_BUTTON2_MASK)
+    else if (motion->state & GDK_BUTTON2_MASK)
         m_button = MiddleButton;
-    else if (state & GDK_BUTTON3_MASK)
+    else if (motion->state & GDK_BUTTON3_MASK)
         m_button = RightButton;
 }
 }
index 30dec17..f48f75a 100644 (file)
@@ -42,34 +42,26 @@ namespace WebCore {
 PlatformWheelEvent::PlatformWheelEvent(GdkEventScroll* event)
 {
     static const float delta = 1;
-    GdkModifierType state;
 
     m_type = PlatformEvent::Wheel;
     m_timestamp = wallTimeForEvent(event);
-    gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state);
 
-    if (state & GDK_SHIFT_MASK)
+    if (event->state & GDK_SHIFT_MASK)
         m_modifiers.add(Modifier::ShiftKey);
-    if (state & GDK_CONTROL_MASK)
+    if (event->state & GDK_CONTROL_MASK)
         m_modifiers.add(Modifier::ControlKey);
-    if (state & GDK_MOD1_MASK)
+    if (event->state & GDK_MOD1_MASK)
         m_modifiers.add(Modifier::AltKey);
-    if (state & GDK_META_MASK)
+    if (event->state & GDK_META_MASK)
         m_modifiers.add(Modifier::MetaKey);
-    if (PlatformKeyboardEvent::modifiersContainCapsLock(state))
+    if (PlatformKeyboardEvent::modifiersContainCapsLock(event->state))
         m_modifiers.add(PlatformEvent::Modifier::CapsLockKey);
 
     m_deltaX = 0;
     m_deltaY = 0;
-    GdkScrollDirection direction;
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_scroll_direction(reinterpret_cast<GdkEvent*>(event), &direction);
-#else
-    direction = event->direction;
-#endif
 
     // Docs say an upwards scroll (away from the user) has a positive delta
-    switch (direction) {
+    switch (event->direction) {
         case GDK_SCROLL_UP:
             m_deltaY = delta;
             break;
@@ -98,11 +90,11 @@ PlatformWheelEvent::PlatformWheelEvent(GdkEventScroll* event)
 #if ENABLE(ASYNC_SCROLLING)
 #ifndef GTK_API_VERSION_2
 #if GTK_CHECK_VERSION(3, 20, 0)
-    m_phase = gdk_event_is_scroll_stop_event(reinterpret_cast<GdkEvent*>(event)) ?
+    m_phase = event->is_stop ?
         PlatformWheelEventPhaseEnded :
         PlatformWheelEventPhaseChanged;
 #else
-    m_phase = direction == GDK_SCROLL_SMOOTH && !m_deltaX && !m_deltaY ?
+    m_phase = event->direction == GDK_SCROLL_SMOOTH && !m_deltaX && !m_deltaY ?
         PlatformWheelEventPhaseEnded :
         PlatformWheelEventPhaseChanged;
 #endif
@@ -111,12 +103,8 @@ PlatformWheelEvent::PlatformWheelEvent(GdkEventScroll* event)
 #endif // GTK_API_VERSION_2
 #endif // ENABLE(ASYNC_SCROLLING)
 
-    gdouble x, y, rootX, rootY;
-    gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y);
-    gdk_event_get_root_coords(reinterpret_cast<GdkEvent*>(event), &rootX, &rootY);
-
-    m_position = IntPoint(static_cast<int>(x), static_cast<int>(y));
-    m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY));
+    m_position = IntPoint(static_cast<int>(event->x), static_cast<int>(event->y));
+    m_globalPosition = IntPoint(static_cast<int>(event->x_root), static_cast<int>(event->y_root));
     m_granularity = ScrollByPixelWheelEvent;
     m_directionInvertedFromDevice = false;
 
index 4fcb94d..c1050a4 100644 (file)
@@ -1,3 +1,15 @@
+2019-06-17  Carlos Garcia Campos  <cgarcia@igalia.com>
+
+        Unreviewed, rolling out r246467.
+
+        It broke scrolling with mouse wheel
+
+        Reverted changeset:
+
+        "[GTK] Stop accessing GdkEvent fields when possible"
+        https://bugs.webkit.org/show_bug.cgi?id=198829
+        https://trac.webkit.org/changeset/246467
+
 2019-06-16  Darin Adler  <darin@apple.com>
 
         Rename AtomicString to AtomString
index 5932a29..3c33828 100644 (file)
@@ -73,12 +73,8 @@ static inline OptionSet<WebEvent::Modifier> modifiersForEvent(const GdkEvent* ev
 static inline WebMouseEvent::Button buttonForEvent(const GdkEvent* event)
 {
     unsigned button = 0;
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(event);
-#else
-    GdkEventType type = event->type;
-#endif
-    switch (type) {
+
+    switch (event->type) {
     case GDK_ENTER_NOTIFY:
     case GDK_LEAVE_NOTIFY:
     case GDK_MOTION_NOTIFY: {
@@ -97,17 +93,11 @@ static inline WebMouseEvent::Button buttonForEvent(const GdkEvent* event)
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS:
     case GDK_BUTTON_RELEASE:
-        guint eventButton;
-#ifndef GTK_API_VERSION_2
-        gdk_event_get_button(event, &eventButton);
-#else
-        eventButton = event->button;
-#endif
-        if (eventButton == 1)
+        if (event->button.button == 1)
             button = WebMouseEvent::LeftButton;
-        else if (eventButton == 2)
+        else if (event->button.button == 2)
             button = WebMouseEvent::MiddleButton;
-        else if (eventButton == 3)
+        else if (event->button.button == 3)
             button = WebMouseEvent::RightButton;
         break;
     default:
@@ -151,21 +141,8 @@ WebMouseEvent WebEventFactory::createWebMouseEvent(const GdkEvent* event, int cu
     GdkModifierType state = static_cast<GdkModifierType>(0);
     gdk_event_get_state(event, &state);
 
-    guint eventButton;
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_button(event, &eventButton);
-#else
-    eventButton = event->button;
-#endif
-
     WebEvent::Type type = static_cast<WebEvent::Type>(0);
-
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType eventType = gdk_event_get_event_type(event);
-#else
-    GdkEventType eventType = event->type;
-#endif
-    switch (eventType) {
+    switch (event->type) {
     case GDK_MOTION_NOTIFY:
     case GDK_ENTER_NOTIFY:
     case GDK_LEAVE_NOTIFY:
@@ -175,13 +152,13 @@ WebMouseEvent WebEventFactory::createWebMouseEvent(const GdkEvent* event, int cu
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS: {
         type = WebEvent::MouseDown;
-        auto modifier = stateModifierForGdkButton(eventButton);
+        auto modifier = stateModifierForGdkButton(event->button.button);
         state = static_cast<GdkModifierType>(state | modifier);
         break;
     }
     case GDK_BUTTON_RELEASE: {
         type = WebEvent::MouseUp;
-        auto modifier = stateModifierForGdkButton(eventButton);
+        auto modifier = stateModifierForGdkButton(event->button.button);
         state = static_cast<GdkModifierType>(state & ~modifier);
         break;
     }
@@ -226,17 +203,11 @@ WebWheelEvent WebEventFactory::createWebWheelEvent(const GdkEvent* event)
 WebWheelEvent WebEventFactory::createWebWheelEvent(const GdkEvent* event, WebWheelEvent::Phase phase, WebWheelEvent::Phase momentumPhase)
 {
     double x, y, xRoot, yRoot;
-    GdkScrollDirection direction;
     gdk_event_get_coords(event, &x, &y);
     gdk_event_get_root_coords(event, &xRoot, &yRoot);
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_scroll_direction(event, &direction);
-#else
-    direction = event->direction;
-#endif
 
     FloatSize wheelTicks;
-    switch (direction) {
+    switch (event->scroll.direction) {
     case GDK_SCROLL_UP:
         wheelTicks = FloatSize(0, 1);
         break;
@@ -280,32 +251,17 @@ WebWheelEvent WebEventFactory::createWebWheelEvent(const GdkEvent* event, WebWhe
 
 WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(const GdkEvent* event, const WebCore::CompositionResults& compositionResults, Vector<String>&& commands)
 {
-    guint keyval;
-    guint16 keycode;
-#ifndef GTK_API_VERSION_2
-    gdk_event_get_keyval(event, &keyval);
-    gdk_event_get_keycode(event, &keycode);
-#else
-    keyval = event->keyval;
-    keycode = event->hardware_keycode;
-#endif
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(event);
-#else
-    GdkEventType type = event->type;
-#endif
-
     return WebKeyboardEvent(
-        type == GDK_KEY_RELEASE ? WebEvent::KeyUp : WebEvent::KeyDown,
-        compositionResults.simpleString.length() ? compositionResults.simpleString : PlatformKeyboardEvent::singleCharacterString(keyval),
-        PlatformKeyboardEvent::keyValueForGdkKeyCode(keyval),
-        PlatformKeyboardEvent::keyCodeForHardwareKeyCode(keycode),
-        PlatformKeyboardEvent::keyIdentifierForGdkKeyCode(keyval),
-        PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode(keyval),
-        static_cast<int>(keyval),
+        event->type == GDK_KEY_RELEASE ? WebEvent::KeyUp : WebEvent::KeyDown,
+        compositionResults.simpleString.length() ? compositionResults.simpleString : PlatformKeyboardEvent::singleCharacterString(event->key.keyval),
+        PlatformKeyboardEvent::keyValueForGdkKeyCode(event->key.keyval),
+        PlatformKeyboardEvent::keyCodeForHardwareKeyCode(event->key.hardware_keycode),
+        PlatformKeyboardEvent::keyIdentifierForGdkKeyCode(event->key.keyval),
+        PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode(event->key.keyval),
+        static_cast<int>(event->key.keyval),
         compositionResults.compositionUpdated(),
         WTFMove(commands),
-        isGdkKeyCodeFromKeyPad(keyval),
+        isGdkKeyCodeFromKeyPad(event->key.keyval),
         modifiersForEvent(event),
         wallTimeForEvent(event));
 }
@@ -315,12 +271,7 @@ WebTouchEvent WebEventFactory::createWebTouchEvent(const GdkEvent* event, Vector
 {
 #ifndef GTK_API_VERSION_2
     WebEvent::Type type = WebEvent::NoType;
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType eventType = gdk_event_get_event_type(event);
-#else
-    GdkEventType eventType = event->type;
-#endif
-    switch (eventType) {
+    switch (event->type) {
     case GDK_TOUCH_BEGIN:
         type = WebEvent::TouchStart;
         break;
index 31e0973..59683a5 100644 (file)
@@ -92,7 +92,7 @@ static const unsigned boxSpace = 6;
 
 static void emojiHovered(GtkWidget* widget, GdkEvent* event)
 {
-    if (gdk_event_get_event_type(event) == GDK_ENTER_NOTIFY)
+    if (event->type == GDK_ENTER_NOTIFY)
         gtk_widget_set_state_flags(widget, GTK_STATE_FLAG_PRELIGHT, FALSE);
     else
         gtk_widget_unset_state_flags(widget, GTK_STATE_FLAG_PRELIGHT);
index d504a11..5678f01 100644 (file)
@@ -46,9 +46,7 @@ static void webkitScriptDialogImplClose(WebKitScriptDialogImpl* dialog)
 
 static gboolean webkitScriptDialogImplKeyPressEvent(GtkWidget* widget, GdkEventKey* keyEvent)
 {
-    guint keyval;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(keyEvent), &keyval);
-    if (keyval == GDK_KEY_Escape) {
+    if (keyEvent->keyval == GDK_KEY_Escape) {
         webkitScriptDialogImplClose(WEBKIT_SCRIPT_DIALOG_IMPL(widget));
         return GDK_EVENT_STOP;
     }
index 25b937d..b23cad1 100644 (file)
@@ -118,27 +118,19 @@ public:
             eventTime = (timeValue.tv_sec * 1000) + (timeValue.tv_usec / 1000);
         }
 
-        GdkEventType type;
-        guint button;
-        double x, y;
-        gdk_event_get_coords(event, &x, &y);
-        gdk_event_get_button(event, &button);
-#if GTK_CHECK_VERSION(3, 10, 0)
-        type = gdk_event_get_event_type(event);
-#else
-        type = event->type;
-#endif
-        if ((type == GDK_2BUTTON_PRESS || type == GDK_3BUTTON_PRESS)
-            || ((std::abs(x - previousClickPoint.x()) < doubleClickDistance)
-                && (std::abs(y - previousClickPoint.y()) < doubleClickDistance)
+        if ((event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS)
+            || ((std::abs(event->button.x - previousClickPoint.x()) < doubleClickDistance)
+                && (std::abs(event->button.y - previousClickPoint.y()) < doubleClickDistance)
                 && (eventTime - previousClickTime < static_cast<unsigned>(doubleClickTime))
-                && (button == previousClickButton)))
+                && (event->button.button == previousClickButton)))
             currentClickCount++;
         else
             currentClickCount = 1;
 
+        double x, y;
+        gdk_event_get_coords(event, &x, &y);
         previousClickPoint = IntPoint(x, y);
-        previousClickButton = button;
+        previousClickButton = event->button.button;
         previousClickTime = eventTime;
 
         return currentClickCount;
@@ -747,13 +739,8 @@ static gboolean webkitWebViewBaseKeyPressEvent(GtkWidget* widget, GdkEventKey* k
     WebKitWebViewBase* webViewBase = WEBKIT_WEB_VIEW_BASE(widget);
     WebKitWebViewBasePrivate* priv = webViewBase->priv;
 
-    GdkModifierType state;
-    guint keyval;
-    gdk_event_get_state(reinterpret_cast<GdkEvent*>(keyEvent), &state);
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(keyEvent), &keyval);
-
 #if ENABLE(DEVELOPER_MODE) && OS(LINUX)
-    if ((state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK) && keyval == GDK_KEY_G) {
+    if ((keyEvent->state & GDK_CONTROL_MASK) && (keyEvent->state & GDK_SHIFT_MASK) && keyEvent->keyval == GDK_KEY_G) {
         auto& preferences = priv->pageProxy->preferences();
         preferences.setResourceUsageOverlayVisible(!preferences.resourceUsageOverlayVisible());
         priv->shouldForwardNextKeyEvent = FALSE;
@@ -766,7 +753,7 @@ static gboolean webkitWebViewBaseKeyPressEvent(GtkWidget* widget, GdkEventKey* k
 
 #if ENABLE(FULLSCREEN_API)
     if (priv->fullScreenModeActive) {
-        switch (keyval) {
+        switch (keyEvent->keyval) {
         case GDK_KEY_Escape:
         case GDK_KEY_f:
         case GDK_KEY_F:
@@ -822,12 +809,8 @@ static void webkitWebViewBaseHandleMouseEvent(WebKitWebViewBase* webViewBase, Gd
     ASSERT(!priv->dialog);
 
     int clickCount = 0;
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType eventType = gdk_event_get_event_type(event);
-#else
-    GdkEventType eventType = event->type;
-#endif
-    switch (eventType) {
+
+    switch (event->type) {
     case GDK_BUTTON_PRESS:
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS: {
@@ -842,10 +825,8 @@ static void webkitWebViewBaseHandleMouseEvent(WebKitWebViewBase* webViewBase, Gd
 
         priv->inputMethodFilter.notifyMouseButtonPress();
 
-        guint button;
-        gdk_event_get_button(event, &button);
         // If it's a right click event save it as a possible context menu event.
-        if (button == GDK_BUTTON_SECONDARY)
+        if (event->button.button == GDK_BUTTON_SECONDARY)
             priv->contextMenuEvent.reset(gdk_event_copy(event));
 
         clickCount = priv->clickCounter.currentClickCountForGdkButtonEvent(event);
@@ -994,12 +975,10 @@ static gboolean webkitWebViewBaseCrossingNotifyEvent(GtkWidget* widget, GdkEvent
     // because those coordinates are inside the web view.
     GtkAllocation allocation;
     gtk_widget_get_allocation(widget, &allocation);
-    double xEvent, yEvent;
-    gdk_event_get_coords(reinterpret_cast<GdkEvent*>(crossingEvent), &xEvent, &yEvent);
     double width = allocation.width;
     double height = allocation.height;
-    double x = xEvent;
-    double y = yEvent;
+    double x = crossingEvent->x;
+    double y = crossingEvent->y;
     if (x < 0 && x > -1)
         x = -1;
     else if (x >= width && x < width + 1)
@@ -1011,7 +990,7 @@ static gboolean webkitWebViewBaseCrossingNotifyEvent(GtkWidget* widget, GdkEvent
 
     GdkEvent* event = reinterpret_cast<GdkEvent*>(crossingEvent);
     GUniquePtr<GdkEvent> copiedEvent;
-    if (x != xEvent || y != yEvent) {
+    if (x != crossingEvent->x || y != crossingEvent->y) {
         copiedEvent.reset(gdk_event_copy(event));
         copiedEvent->crossing.x = x;
         copiedEvent->crossing.y = y;
@@ -1057,12 +1036,7 @@ static inline WebPlatformTouchPoint::TouchPointState touchPointStateForEvents(co
 static void webkitWebViewBaseGetTouchPointsForEvent(WebKitWebViewBase* webViewBase, GdkEvent* event, Vector<WebPlatformTouchPoint>& touchPoints)
 {
     WebKitWebViewBasePrivate* priv = webViewBase->priv;
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(event);
-#else
-    GdkEventType type = event->type;
-#endif
-    bool touchEnd = (type == GDK_TOUCH_END) || (type == GDK_TOUCH_CANCEL);
+    bool touchEnd = (event->type == GDK_TOUCH_END) || (event->type == GDK_TOUCH_CANCEL);
     touchPoints.reserveInitialCapacity(touchEnd ? priv->touchEvents.size() + 1 : priv->touchEvents.size());
 
     for (const auto& it : priv->touchEvents)
@@ -1084,12 +1058,7 @@ static gboolean webkitWebViewBaseTouchEvent(GtkWidget* widget, GdkEventTouch* ev
     GdkEvent* touchEvent = reinterpret_cast<GdkEvent*>(event);
     uint32_t sequence = GPOINTER_TO_UINT(gdk_event_get_event_sequence(touchEvent));
 
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(touchEvent);
-#else
-    GdkEventType type = touchEvent->type
-#endif
-    switch (type) {
+    switch (touchEvent->type) {
     case GDK_TOUCH_BEGIN: {
         ASSERT(!priv->touchEvents.contains(sequence));
         GUniquePtr<GdkEvent> event(gdk_event_copy(touchEvent));
@@ -1208,9 +1177,7 @@ private:
 
     void swipe(GdkEventTouch* event, const FloatPoint& velocity) final
     {
-        double x, y;
-        gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y);
-        GUniquePtr<GdkEvent> scrollEvent = createScrollEvent(event, FloatPoint::narrowPrecision(x, y), velocity, true);
+        GUniquePtr<GdkEvent> scrollEvent = createScrollEvent(event, FloatPoint::narrowPrecision(event->x, event->y), velocity, true);
         webkitWebViewBaseHandleWheelEvent(m_webView, scrollEvent.get(), WebWheelEvent::Phase::PhaseNone, WebWheelEvent::Phase::PhaseBegan);
     }
 
@@ -1311,13 +1278,9 @@ static void webkitWebViewBaseDragDataReceived(GtkWidget* widget, GdkDragContext*
 static gboolean webkitWebViewBaseEvent(GtkWidget* widget, GdkEvent* event)
 {
 #if HAVE(GTK_GESTURES)
-#if GTK_CHECK_VERSION(3, 10, 0)
-    if (gdk_event_get_event_type(event) == GDK_TOUCHPAD_PINCH)
-#else
     if (event->type == GDK_TOUCHPAD_PINCH)
-#endif // GTK_CHECK_VERSION(3, 10, 0)
         webkitWebViewBaseGestureController(WEBKIT_WEB_VIEW_BASE(widget)).handleEvent(event);
-#endif // HAVE(GTK_GESTURES)
+#endif
 
     return GDK_EVENT_PROPAGATE;
 }
index 39fa737..5f58449 100644 (file)
@@ -53,11 +53,7 @@ bool GestureController::handleEvent(GdkEvent* event)
     m_swipeGesture.handleEvent(event);
     m_zoomGesture.handleEvent(event);
     m_longpressGesture.handleEvent(event);
-#if GTK_CHECK_VERSION(3, 10, 0)
-    touchEnd = (gdk_event_get_event_type(event) == GDK_TOUCH_END) || (gdk_event_get_event_type(event) == GDK_TOUCH_CANCEL);
-#else
     touchEnd = (event->type == GDK_TOUCH_END) || (event->type == GDK_TOUCH_CANCEL);
-#endif
     return touchEnd ? wasProcessingGestures : isProcessingGestures();
 }
 
index 323a118..f2b860f 100644 (file)
@@ -198,14 +198,7 @@ void InputMethodFilter::filterKeyEvent(GdkEventKey* event, FilterKeyEventComplet
 
     bool justSentFakeKeyUp = m_justSentFakeKeyUp;
     m_justSentFakeKeyUp = false;
-    guint keyval;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-#if GTK_CHECK_VERSION(3, 10, 0)
-    GdkEventType type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event));
-#else
-    GdkEventType type = event->type;
-#endif
-    if (justSentFakeKeyUp && type == GDK_KEY_RELEASE)
+    if (justSentFakeKeyUp && event->type == GDK_KEY_RELEASE)
         return;
 
     // Simple input methods work such that even normal keystrokes fire the
@@ -217,10 +210,10 @@ void InputMethodFilter::filterKeyEvent(GdkEventKey* event, FilterKeyEventComplet
         return;
     }
 
-    if (filtered && type == GDK_KEY_PRESS) {
+    if (filtered && event->type == GDK_KEY_PRESS) {
         if (!m_preeditChanged && m_confirmedComposition.isNull()) {
             m_composingTextCurrently = true;
-            m_lastFilteredKeyPressCodeWithNoResults = keyval;
+            m_lastFilteredKeyPressCodeWithNoResults = event->keyval;
             return;
         }
 
@@ -234,7 +227,7 @@ void InputMethodFilter::filterKeyEvent(GdkEventKey* event, FilterKeyEventComplet
 
     // If we previously filtered a key press event and it yielded no results. Suppress
     // the corresponding key release event to avoid confusing the web content.
-    if (type == GDK_KEY_RELEASE && lastFilteredKeyPressCodeWithNoResults == keyval)
+    if (event->type == GDK_KEY_RELEASE && lastFilteredKeyPressCodeWithNoResults == event->keyval)
         return;
 
     // At this point a keystroke was either:
@@ -450,31 +443,19 @@ void InputMethodFilter::handlePreeditEnd()
 #if ENABLE(API_TESTS)
 void InputMethodFilter::logHandleKeyboardEventForTesting(GdkEventKey* event, const String& eventString, EventFakedForComposition faked)
 {
-    guint keyval;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-#if GTK_CHECK_VERSION(3, 10, 0)
-    const char* eventType = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)) == GDK_KEY_RELEASE ? "release" : "press";
-#else
     const char* eventType = event->type == GDK_KEY_RELEASE ? "release" : "press";
-#endif
     const char* fakedString = faked == EventFaked ? " (faked)" : "";
     if (!eventString.isNull())
-        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(keyval), " text='", eventString, '\'', fakedString));
+        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(event->keyval), " text='", eventString, '\'', fakedString));
     else
-        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(keyval), fakedString));
+        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(event->keyval), fakedString));
 }
 
 void InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting(GdkEventKey* event, ResultsToSend resultsToSend, EventFakedForComposition faked)
 {
-    guint keyval;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-#if GTK_CHECK_VERSION(3, 10, 0)
-    const char* eventType = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)) == GDK_KEY_RELEASE ? "release" : "press";
-#else
     const char* eventType = event->type == GDK_KEY_RELEASE ? "release" : "press";
-#endif
     const char* fakedString = faked == EventFaked ? " (faked)" : "";
-    m_events.append(makeString("sendKeyEventWithCompositionResults type=", eventType, " keycode=", hex(keyval), fakedString));
+    m_events.append(makeString("sendKeyEventWithCompositionResults type=", eventType, " keycode=", hex(event->keyval), fakedString));
 
     if (resultsToSend & Composition && !m_confirmedComposition.isNull())
         logConfirmCompositionForTesting();
index 573bafd..4490ce6 100644 (file)
@@ -205,21 +205,16 @@ Vector<String> KeyBindingTranslator::commandsForKeyEvent(GdkEventKey* event)
 {
     ASSERT(m_pendingEditorCommands.isEmpty());
 
-    guint keyval;
-    GdkModifierType state;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-    gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state);
-
     gtk_bindings_activate_event(G_OBJECT(m_nativeWidget.get()), event);
     if (!m_pendingEditorCommands.isEmpty())
         return WTFMove(m_pendingEditorCommands);
 
     // Special-case enter keys for we want them to work regardless of modifier.
-    if ((keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter || keyval == GDK_KEY_ISO_Enter))
+    if ((event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_KP_Enter || event->keyval == GDK_KEY_ISO_Enter))
         return { "InsertNewLine" };
 
     // For keypress events, we want charCode(), but keyCode() does that.
-    unsigned mapKey = state << 16 | keyval;
+    unsigned mapKey = event->state << 16 | event->keyval;
     if (!mapKey)
         return { };
 
index 9ae34a7..4bae03a 100644 (file)
@@ -55,7 +55,7 @@ static const double swipeOverlayShadowGradientAlpha[] = { 1, 0.99, 0.98, 0.95, 0
 static bool isEventStop(GdkEventScroll* event)
 {
 #if GTK_CHECK_VERSION(3, 20, 0)
-    return gdk_event_is_scroll_stop_event(reinterpret_cast<GdkEvent*>(event));
+    return event->is_stop;
 #else
     return !event->delta_x && !event->delta_y;
 #endif
@@ -83,12 +83,10 @@ bool ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe(Gd
 {
     GdkDevice* device = gdk_event_get_source_device(reinterpret_cast<GdkEvent*>(event));
     GdkInputSource source = gdk_device_get_source(device);
-    GdkScrollDirection direction;
-    gdk_event_get_scroll_direction(reinterpret_cast<GdkEvent*>(event), &direction);
 
     // FIXME: Should it maybe be allowed on mice/trackpoints as well? The GDK_SCROLL_SMOOTH
     // requirement already filters out most mice, and it works pretty well on a trackpoint
-    return direction == GDK_SCROLL_SMOOTH && (source == GDK_SOURCE_TOUCHPAD || source == GDK_SOURCE_TOUCHSCREEN);
+    return event->direction == GDK_SCROLL_SMOOTH && (source == GDK_SOURCE_TOUCHPAD || source == GDK_SOURCE_TOUCHSCREEN);
 }
 
 static bool isTouchEvent(GdkEventScroll* event)
@@ -102,11 +100,9 @@ static bool isTouchEvent(GdkEventScroll* event)
 FloatSize ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas(GdkEventScroll* event)
 {
     double multiplier = isTouchEvent(event) ? Scrollbar::pixelsPerLineStep() : gtkScrollDeltaMultiplier;
-    double xDelta, yDelta;
-    gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), &xDelta, &yDelta);
 
     // GdkEventScroll deltas are inverted compared to NSEvent, so invert them again
-    return -FloatSize(xDelta, yDelta) * multiplier;
+    return -FloatSize(event->delta_x, event->delta_y) * multiplier;
 }
 
 bool ViewGestureController::handleScrollWheelEvent(GdkEventScroll* event)
@@ -187,17 +183,13 @@ bool ViewGestureController::SwipeProgressTracker::handleEvent(GdkEventScroll* ev
         return false;
     }
 
-    uint32_t eventTime = gdk_event_get_time(reinterpret_cast<GdkEvent*>(event));
-    double eventDeltaX;
-    gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), &eventDeltaX, nullptr);
-
-    double deltaX = -eventDeltaX;
+    double deltaX = -event->delta_x;
     if (isTouchEvent(event))
         deltaX *= (double) Scrollbar::pixelsPerLineStep() / m_webPageProxy.viewSize().width();
     else
         deltaX *= gtkScrollDeltaMultiplier / swipeTouchpadBaseWidth;
 
-    Seconds time = Seconds::fromMilliseconds(eventTime);
+    Seconds time = Seconds::fromMilliseconds(event->time);
     if (time != m_prevTime)
         m_velocity = deltaX / (time - m_prevTime).milliseconds();
 
index afb86af..e74601c 100644 (file)
@@ -95,15 +95,11 @@ void WebPopupMenuProxyGtk::treeViewRowActivatedCallback(GtkTreeView*, GtkTreePat
 
 gboolean WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback(GtkWidget* treeView, GdkEventButton* event, WebPopupMenuProxyGtk* popupMenu)
 {
-    guint button;
-    gdk_event_get_button(reinterpret_cast<GdkEvent*>(event), &button);
-    if (button != GDK_BUTTON_PRIMARY)
+    if (event->button != GDK_BUTTON_PRIMARY)
         return FALSE;
 
-    double x, y;
-    gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y);
     GUniqueOutPtr<GtkTreePath> path;
-    if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeView), x, y, &path.outPtr(), nullptr, nullptr, nullptr))
+    if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeView), event->x, event->y, &path.outPtr(), nullptr, nullptr, nullptr))
         return FALSE;
 
     return popupMenu->activateItemAtPath(path.get());
@@ -123,9 +119,7 @@ gboolean WebPopupMenuProxyGtk::keyPressEventCallback(GtkWidget* widget, GdkEvent
     if (!popupMenu->m_device)
         return FALSE;
 
-    guint keyval;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-    if (keyval == GDK_KEY_Escape) {
+    if (event->keyval == GDK_KEY_Escape) {
         popupMenu->hidePopupMenu();
         return TRUE;
     }
@@ -376,22 +370,19 @@ void WebPopupMenuProxyGtk::cancelTracking()
 
 Optional<unsigned> WebPopupMenuProxyGtk::typeAheadFindIndex(GdkEventKey* event)
 {
-    guint keyval;
-    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
-    gunichar keychar = gdk_keyval_to_unicode(keyval);
+    gunichar keychar = gdk_keyval_to_unicode(event->keyval);
     if (!g_unichar_isprint(keychar))
         return WTF::nullopt;
 
-    uint32_t time = gdk_event_get_time(reinterpret_cast<GdkEvent*>(event));
-    if (time < m_previousKeyEventTime)
+    if (event->time < m_previousKeyEventTime)
         return WTF::nullopt;
 
     static const uint32_t typeaheadTimeoutMs = 1000;
-    if (time - m_previousKeyEventTime > typeaheadTimeoutMs) {
+    if (event->time - m_previousKeyEventTime > typeaheadTimeoutMs) {
         if (m_currentSearchString)
             g_string_truncate(m_currentSearchString, 0);
     }
-    m_previousKeyEventTime = time;
+    m_previousKeyEventTime = event->time;
 
     if (!m_currentSearchString)
         m_currentSearchString = g_string_new(nullptr);