Title: [246467] trunk/Source
Revision
246467
Author
[email protected]
Date
2019-06-15 11:33:03 -0700 (Sat, 15 Jun 2019)

Log Message

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

Patch by Ludovico de Nittis <[email protected]> on 2019-06-15
Reviewed by Michael Catanzaro.

Direct access to GdkEvent structs is no longer possible in GTK 4.

Source/WebCore:

No behaviour changes.

* platform/gtk/PlatformKeyboardEventGtk.cpp:
(WebCore::eventTypeForGdkKeyEvent):
(WebCore::modifiersForGdkKeyEvent):
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
* platform/gtk/PlatformMouseEventGtk.cpp:
(WebCore::PlatformMouseEvent::PlatformMouseEvent):
* platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):

Source/WebKit:

* Shared/gtk/WebEventFactory.cpp:
(WebKit::buttonForEvent):
(WebKit::WebEventFactory::createWebMouseEvent):
(WebKit::WebEventFactory::createWebWheelEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):
(WebKit::WebEventFactory::createWebTouchEvent):
* UIProcess/API/gtk/WebKitEmojiChooser.cpp:
* UIProcess/API/gtk/WebKitScriptDialogImpl.cpp:
(webkitScriptDialogImplKeyPressEvent):
* UIProcess/API/gtk/WebKitWebViewBase.cpp:
(ClickCounter::currentClickCountForGdkButtonEvent):
(webkitWebViewBaseKeyPressEvent):
(webkitWebViewBaseHandleMouseEvent):
(webkitWebViewBaseCrossingNotifyEvent):
(webkitWebViewBaseGetTouchPointsForEvent):
(webkitWebViewBaseTouchEvent):
(webkitWebViewBaseEvent):
* UIProcess/gtk/GestureController.cpp:
(WebKit::GestureController::handleEvent):
* UIProcess/gtk/InputMethodFilter.cpp:
(WebKit::InputMethodFilter::filterKeyEvent):
(WebKit::InputMethodFilter::logHandleKeyboardEventForTesting):
(WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting):
* UIProcess/gtk/KeyBindingTranslator.cpp:
(WebKit::KeyBindingTranslator::commandsForKeyEvent):
* UIProcess/gtk/ViewGestureControllerGtk.cpp:
(WebKit::isEventStop):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
(WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
(WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
* UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
(WebKit::WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback):
(WebKit::WebPopupMenuProxyGtk::keyPressEventCallback):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (246466 => 246467)


--- trunk/Source/WebCore/ChangeLog	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebCore/ChangeLog	2019-06-15 18:33:03 UTC (rev 246467)
@@ -1,3 +1,23 @@
+2019-06-15  Ludovico de Nittis  <[email protected]>
+
+        [GTK] Stop accessing GdkEvent fields when possible
+        https://bugs.webkit.org/show_bug.cgi?id=198829
+
+        Reviewed by Michael Catanzaro.
+
+        Direct access to GdkEvent structs is no longer possible in GTK 4.
+
+        No behaviour changes.
+
+        * platform/gtk/PlatformKeyboardEventGtk.cpp:
+        (WebCore::eventTypeForGdkKeyEvent):
+        (WebCore::modifiersForGdkKeyEvent):
+        (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
+        * platform/gtk/PlatformMouseEventGtk.cpp:
+        (WebCore::PlatformMouseEvent::PlatformMouseEvent):
+        * platform/gtk/PlatformWheelEventGtk.cpp:
+        (WebCore::PlatformWheelEvent::PlatformWheelEvent):
+
 2019-06-15  Rob Buis  <[email protected]>
 
         Add tests for prefetch redirects

Modified: trunk/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp (246466 => 246467)


--- trunk/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -1324,21 +1324,33 @@
 
 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;
-    if (event->state & GDK_SHIFT_MASK || event->keyval == GDK_KEY_3270_BackTab)
+    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)
         modifiers.add(PlatformEvent::Modifier::ShiftKey);
-    if (event->state & GDK_CONTROL_MASK)
+    if (state & GDK_CONTROL_MASK)
         modifiers.add(PlatformEvent::Modifier::ControlKey);
-    if (event->state & GDK_MOD1_MASK)
+    if (state & GDK_MOD1_MASK)
         modifiers.add(PlatformEvent::Modifier::AltKey);
-    if (event->state & GDK_META_MASK)
+    if (state & GDK_META_MASK)
         modifiers.add(PlatformEvent::Modifier::MetaKey);
-    if (event->state & GDK_LOCK_MASK)
+    if (state & GDK_LOCK_MASK)
         modifiers.add(PlatformEvent::Modifier::CapsLockKey);
     return modifiers;
 }
@@ -1346,19 +1358,30 @@
 // 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;

Modified: trunk/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp (246466 => 246467)


--- trunk/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -39,45 +39,64 @@
 // 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((int)event->x, (int)event->y);
-    m_globalPosition = IntPoint((int)event->x_root, (int)event->y_root);
+    m_position = IntPoint(static_cast<int>(x), static_cast<int>(y));
+    m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY));
     m_button = NoButton;
     m_clickCount = 0;
     m_modifierFlags = 0;
 
-    if (event->state & GDK_SHIFT_MASK)
+    if (state & GDK_SHIFT_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ShiftKey);
-    if (event->state & GDK_CONTROL_MASK)
+    if (state & GDK_CONTROL_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ControlKey);
-    if (event->state & GDK_MOD1_MASK)
+    if (state & GDK_MOD1_MASK)
         m_modifiers.add(PlatformEvent::Modifier::AltKey);
-    if (event->state & GDK_META_MASK)
+    if (state & GDK_META_MASK)
         m_modifiers.add(PlatformEvent::Modifier::MetaKey);
-    if (PlatformKeyboardEvent::modifiersContainCapsLock(event->state))
+    if (PlatformKeyboardEvent::modifiersContainCapsLock(state))
         m_modifiers.add(PlatformEvent::Modifier::CapsLockKey);
 
-    switch (event->type) {
+#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) {
     case GDK_BUTTON_PRESS:
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS:
     case GDK_BUTTON_RELEASE:
         m_type = PlatformEvent::MousePressed;
-        if (event->type == GDK_BUTTON_RELEASE) {
+        if (type == GDK_BUTTON_RELEASE) {
             m_type = PlatformEvent::MouseReleased;
             m_clickCount = 0;
-        } else if (event->type == GDK_BUTTON_PRESS)
+        } else if (type == GDK_BUTTON_PRESS)
             m_clickCount = 1;
-        else if (event->type == GDK_2BUTTON_PRESS)
+        else if (type == GDK_2BUTTON_PRESS)
             m_clickCount = 2;
-        else if (event->type == GDK_3BUTTON_PRESS)
+        else if (type == GDK_3BUTTON_PRESS)
             m_clickCount = 3;
 
-        if (event->button == 1)
+        if (button == 1)
             m_button = LeftButton;
-        else if (event->button == 2)
+        else if (button == 2)
             m_button = MiddleButton;
-        else if (event->button == 3)
+        else if (button == 3)
             m_button = RightButton;
         break;
 
@@ -88,25 +107,36 @@
 
 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 (motion->state & GDK_SHIFT_MASK)
+    if (state & GDK_SHIFT_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ShiftKey);
-    if (motion->state & GDK_CONTROL_MASK)
+    if (state & GDK_CONTROL_MASK)
         m_modifiers.add(PlatformEvent::Modifier::ControlKey);
-    if (motion->state & GDK_MOD1_MASK)
+    if (state & GDK_MOD1_MASK)
         m_modifiers.add(PlatformEvent::Modifier::AltKey);
-    if (motion->state & GDK_META_MASK)
+    if (state & GDK_META_MASK)
         m_modifiers.add(PlatformEvent::Modifier::MetaKey);
-    if (PlatformKeyboardEvent::modifiersContainCapsLock(motion->state))
+    if (PlatformKeyboardEvent::modifiersContainCapsLock(state))
         m_modifiers.add(PlatformEvent::Modifier::CapsLockKey);
 
-    switch (motion->type) {
+#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) {
     case GDK_MOTION_NOTIFY:
         m_type = PlatformEvent::MouseMoved;
         m_button = NoButton;
@@ -116,11 +146,11 @@
         ASSERT_NOT_REACHED();
     };
 
-    if (motion->state & GDK_BUTTON1_MASK)
+    if (state & GDK_BUTTON1_MASK)
         m_button = LeftButton;
-    else if (motion->state & GDK_BUTTON2_MASK)
+    else if (state & GDK_BUTTON2_MASK)
         m_button = MiddleButton;
-    else if (motion->state & GDK_BUTTON3_MASK)
+    else if (state & GDK_BUTTON3_MASK)
         m_button = RightButton;
 }
 }

Modified: trunk/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp (246466 => 246467)


--- trunk/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -42,26 +42,34 @@
 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 (event->state & GDK_SHIFT_MASK)
+    if (state & GDK_SHIFT_MASK)
         m_modifiers.add(Modifier::ShiftKey);
-    if (event->state & GDK_CONTROL_MASK)
+    if (state & GDK_CONTROL_MASK)
         m_modifiers.add(Modifier::ControlKey);
-    if (event->state & GDK_MOD1_MASK)
+    if (state & GDK_MOD1_MASK)
         m_modifiers.add(Modifier::AltKey);
-    if (event->state & GDK_META_MASK)
+    if (state & GDK_META_MASK)
         m_modifiers.add(Modifier::MetaKey);
-    if (PlatformKeyboardEvent::modifiersContainCapsLock(event->state))
+    if (PlatformKeyboardEvent::modifiersContainCapsLock(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 (event->direction) {
+    switch (direction) {
         case GDK_SCROLL_UP:
             m_deltaY = delta;
             break;
@@ -90,11 +98,11 @@
 #if ENABLE(ASYNC_SCROLLING)
 #ifndef GTK_API_VERSION_2
 #if GTK_CHECK_VERSION(3, 20, 0)
-    m_phase = event->is_stop ?
+    m_phase = gdk_event_is_scroll_stop_event(reinterpret_cast<GdkEvent*>(event)) ?
         PlatformWheelEventPhaseEnded :
         PlatformWheelEventPhaseChanged;
 #else
-    m_phase = event->direction == GDK_SCROLL_SMOOTH && !m_deltaX && !m_deltaY ?
+    m_phase = direction == GDK_SCROLL_SMOOTH && !m_deltaX && !m_deltaY ?
         PlatformWheelEventPhaseEnded :
         PlatformWheelEventPhaseChanged;
 #endif
@@ -103,8 +111,12 @@
 #endif // GTK_API_VERSION_2
 #endif // ENABLE(ASYNC_SCROLLING)
 
-    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));
+    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_granularity = ScrollByPixelWheelEvent;
     m_directionInvertedFromDevice = false;
 

Modified: trunk/Source/WebKit/ChangeLog (246466 => 246467)


--- trunk/Source/WebKit/ChangeLog	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/ChangeLog	2019-06-15 18:33:03 UTC (rev 246467)
@@ -1,3 +1,46 @@
+2019-06-15  Ludovico de Nittis  <[email protected]>
+
+        [GTK] Stop accessing GdkEvent fields when possible
+        https://bugs.webkit.org/show_bug.cgi?id=198829
+
+        Reviewed by Michael Catanzaro.
+
+        Direct access to GdkEvent structs is no longer possible in GTK 4.
+
+        * Shared/gtk/WebEventFactory.cpp:
+        (WebKit::buttonForEvent):
+        (WebKit::WebEventFactory::createWebMouseEvent):
+        (WebKit::WebEventFactory::createWebWheelEvent):
+        (WebKit::WebEventFactory::createWebKeyboardEvent):
+        (WebKit::WebEventFactory::createWebTouchEvent):
+        * UIProcess/API/gtk/WebKitEmojiChooser.cpp:
+        * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp:
+        (webkitScriptDialogImplKeyPressEvent):
+        * UIProcess/API/gtk/WebKitWebViewBase.cpp:
+        (ClickCounter::currentClickCountForGdkButtonEvent):
+        (webkitWebViewBaseKeyPressEvent):
+        (webkitWebViewBaseHandleMouseEvent):
+        (webkitWebViewBaseCrossingNotifyEvent):
+        (webkitWebViewBaseGetTouchPointsForEvent):
+        (webkitWebViewBaseTouchEvent):
+        (webkitWebViewBaseEvent):
+        * UIProcess/gtk/GestureController.cpp:
+        (WebKit::GestureController::handleEvent):
+        * UIProcess/gtk/InputMethodFilter.cpp:
+        (WebKit::InputMethodFilter::filterKeyEvent):
+        (WebKit::InputMethodFilter::logHandleKeyboardEventForTesting):
+        (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting):
+        * UIProcess/gtk/KeyBindingTranslator.cpp:
+        (WebKit::KeyBindingTranslator::commandsForKeyEvent):
+        * UIProcess/gtk/ViewGestureControllerGtk.cpp:
+        (WebKit::isEventStop):
+        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe):
+        (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas):
+        (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent):
+        * UIProcess/gtk/WebPopupMenuProxyGtk.cpp:
+        (WebKit::WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback):
+        (WebKit::WebPopupMenuProxyGtk::keyPressEventCallback):
+
 2019-06-15  Rob Buis  <[email protected]>
 
         Store prefetch redirects in the prefetch cache

Modified: trunk/Source/WebKit/Shared/gtk/WebEventFactory.cpp (246466 => 246467)


--- trunk/Source/WebKit/Shared/gtk/WebEventFactory.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/Shared/gtk/WebEventFactory.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -73,8 +73,12 @@
 static inline WebMouseEvent::Button buttonForEvent(const GdkEvent* event)
 {
     unsigned button = 0;
-
-    switch (event->type) {
+#if GTK_CHECK_VERSION(3, 10, 0)
+    GdkEventType type = gdk_event_get_event_type(event);
+#else
+    GdkEventType type = event->type;
+#endif
+    switch (type) {
     case GDK_ENTER_NOTIFY:
     case GDK_LEAVE_NOTIFY:
     case GDK_MOTION_NOTIFY: {
@@ -93,11 +97,17 @@
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS:
     case GDK_BUTTON_RELEASE:
-        if (event->button.button == 1)
+        guint eventButton;
+#ifndef GTK_API_VERSION_2
+        gdk_event_get_button(event, &eventButton);
+#else
+        eventButton = event->button;
+#endif
+        if (eventButton == 1)
             button = WebMouseEvent::LeftButton;
-        else if (event->button.button == 2)
+        else if (eventButton == 2)
             button = WebMouseEvent::MiddleButton;
-        else if (event->button.button == 3)
+        else if (eventButton == 3)
             button = WebMouseEvent::RightButton;
         break;
     default:
@@ -141,8 +151,21 @@
     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);
-    switch (event->type) {
+
+#if GTK_CHECK_VERSION(3, 10, 0)
+    GdkEventType eventType = gdk_event_get_event_type(event);
+#else
+    GdkEventType eventType = event->type;
+#endif
+    switch (eventType) {
     case GDK_MOTION_NOTIFY:
     case GDK_ENTER_NOTIFY:
     case GDK_LEAVE_NOTIFY:
@@ -152,13 +175,13 @@
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS: {
         type = WebEvent::MouseDown;
-        auto modifier = stateModifierForGdkButton(event->button.button);
+        auto modifier = stateModifierForGdkButton(eventButton);
         state = static_cast<GdkModifierType>(state | modifier);
         break;
     }
     case GDK_BUTTON_RELEASE: {
         type = WebEvent::MouseUp;
-        auto modifier = stateModifierForGdkButton(event->button.button);
+        auto modifier = stateModifierForGdkButton(eventButton);
         state = static_cast<GdkModifierType>(state & ~modifier);
         break;
     }
@@ -203,11 +226,17 @@
 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 (event->scroll.direction) {
+    switch (direction) {
     case GDK_SCROLL_UP:
         wheelTicks = FloatSize(0, 1);
         break;
@@ -251,17 +280,32 @@
 
 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(
-        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),
+        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),
         compositionResults.compositionUpdated(),
         WTFMove(commands),
-        isGdkKeyCodeFromKeyPad(event->key.keyval),
+        isGdkKeyCodeFromKeyPad(keyval),
         modifiersForEvent(event),
         wallTimeForEvent(event));
 }
@@ -271,7 +315,12 @@
 {
 #ifndef GTK_API_VERSION_2
     WebEvent::Type type = WebEvent::NoType;
-    switch (event->type) {
+#if GTK_CHECK_VERSION(3, 10, 0)
+    GdkEventType eventType = gdk_event_get_event_type(event);
+#else
+    GdkEventType eventType = event->type;
+#endif
+    switch (eventType) {
     case GDK_TOUCH_BEGIN:
         type = WebEvent::TouchStart;
         break;

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -92,7 +92,7 @@
 
 static void emojiHovered(GtkWidget* widget, GdkEvent* event)
 {
-    if (event->type == GDK_ENTER_NOTIFY)
+    if (gdk_event_get_event_type(event) == 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);

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -46,7 +46,9 @@
 
 static gboolean webkitScriptDialogImplKeyPressEvent(GtkWidget* widget, GdkEventKey* keyEvent)
 {
-    if (keyEvent->keyval == GDK_KEY_Escape) {
+    guint keyval;
+    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(keyEvent), &keyval);
+    if (keyval == GDK_KEY_Escape) {
         webkitScriptDialogImplClose(WEBKIT_SCRIPT_DIALOG_IMPL(widget));
         return GDK_EVENT_STOP;
     }

Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -118,19 +118,27 @@
             eventTime = (timeValue.tv_sec * 1000) + (timeValue.tv_usec / 1000);
         }
 
-        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)
+        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)
                 && (eventTime - previousClickTime < static_cast<unsigned>(doubleClickTime))
-                && (event->button.button == previousClickButton)))
+                && (button == previousClickButton)))
             currentClickCount++;
         else
             currentClickCount = 1;
 
-        double x, y;
-        gdk_event_get_coords(event, &x, &y);
         previousClickPoint = IntPoint(x, y);
-        previousClickButton = event->button.button;
+        previousClickButton = button;
         previousClickTime = eventTime;
 
         return currentClickCount;
@@ -739,8 +747,13 @@
     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 ((keyEvent->state & GDK_CONTROL_MASK) && (keyEvent->state & GDK_SHIFT_MASK) && keyEvent->keyval == GDK_KEY_G) {
+    if ((state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK) && keyval == GDK_KEY_G) {
         auto& preferences = priv->pageProxy->preferences();
         preferences.setResourceUsageOverlayVisible(!preferences.resourceUsageOverlayVisible());
         priv->shouldForwardNextKeyEvent = FALSE;
@@ -753,7 +766,7 @@
 
 #if ENABLE(FULLSCREEN_API)
     if (priv->fullScreenModeActive) {
-        switch (keyEvent->keyval) {
+        switch (keyval) {
         case GDK_KEY_Escape:
         case GDK_KEY_f:
         case GDK_KEY_F:
@@ -809,8 +822,12 @@
     ASSERT(!priv->dialog);
 
     int clickCount = 0;
-
-    switch (event->type) {
+#if GTK_CHECK_VERSION(3, 10, 0)
+    GdkEventType eventType = gdk_event_get_event_type(event);
+#else
+    GdkEventType eventType = event->type;
+#endif
+    switch (eventType) {
     case GDK_BUTTON_PRESS:
     case GDK_2BUTTON_PRESS:
     case GDK_3BUTTON_PRESS: {
@@ -825,8 +842,10 @@
 
         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 (event->button.button == GDK_BUTTON_SECONDARY)
+        if (button == GDK_BUTTON_SECONDARY)
             priv->contextMenuEvent.reset(gdk_event_copy(event));
 
         clickCount = priv->clickCounter.currentClickCountForGdkButtonEvent(event);
@@ -975,10 +994,12 @@
     // 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 = crossingEvent->x;
-    double y = crossingEvent->y;
+    double x = xEvent;
+    double y = yEvent;
     if (x < 0 && x > -1)
         x = -1;
     else if (x >= width && x < width + 1)
@@ -990,7 +1011,7 @@
 
     GdkEvent* event = reinterpret_cast<GdkEvent*>(crossingEvent);
     GUniquePtr<GdkEvent> copiedEvent;
-    if (x != crossingEvent->x || y != crossingEvent->y) {
+    if (x != xEvent || y != yEvent) {
         copiedEvent.reset(gdk_event_copy(event));
         copiedEvent->crossing.x = x;
         copiedEvent->crossing.y = y;
@@ -1036,7 +1057,12 @@
 static void webkitWebViewBaseGetTouchPointsForEvent(WebKitWebViewBase* webViewBase, GdkEvent* event, Vector<WebPlatformTouchPoint>& touchPoints)
 {
     WebKitWebViewBasePrivate* priv = webViewBase->priv;
-    bool touchEnd = (event->type == GDK_TOUCH_END) || (event->type == GDK_TOUCH_CANCEL);
+#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);
     touchPoints.reserveInitialCapacity(touchEnd ? priv->touchEvents.size() + 1 : priv->touchEvents.size());
 
     for (const auto& it : priv->touchEvents)
@@ -1058,7 +1084,12 @@
     GdkEvent* touchEvent = reinterpret_cast<GdkEvent*>(event);
     uint32_t sequence = GPOINTER_TO_UINT(gdk_event_get_event_sequence(touchEvent));
 
-    switch (touchEvent->type) {
+#if GTK_CHECK_VERSION(3, 10, 0)
+    GdkEventType type = gdk_event_get_event_type(touchEvent);
+#else
+    GdkEventType type = touchEvent->type
+#endif
+    switch (type) {
     case GDK_TOUCH_BEGIN: {
         ASSERT(!priv->touchEvents.contains(sequence));
         GUniquePtr<GdkEvent> event(gdk_event_copy(touchEvent));
@@ -1177,7 +1208,9 @@
 
     void swipe(GdkEventTouch* event, const FloatPoint& velocity) final
     {
-        GUniquePtr<GdkEvent> scrollEvent = createScrollEvent(event, FloatPoint::narrowPrecision(event->x, event->y), velocity, true);
+        double x, y;
+        gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y);
+        GUniquePtr<GdkEvent> scrollEvent = createScrollEvent(event, FloatPoint::narrowPrecision(x, y), velocity, true);
         webkitWebViewBaseHandleWheelEvent(m_webView, scrollEvent.get(), WebWheelEvent::Phase::PhaseNone, WebWheelEvent::Phase::PhaseBegan);
     }
 
@@ -1278,9 +1311,13 @@
 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
+#endif // HAVE(GTK_GESTURES)
 
     return GDK_EVENT_PROPAGATE;
 }

Modified: trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -53,7 +53,11 @@
     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();
 }
 

Modified: trunk/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -198,7 +198,14 @@
 
     bool justSentFakeKeyUp = m_justSentFakeKeyUp;
     m_justSentFakeKeyUp = false;
-    if (justSentFakeKeyUp && event->type == GDK_KEY_RELEASE)
+    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)
         return;
 
     // Simple input methods work such that even normal keystrokes fire the
@@ -210,10 +217,10 @@
         return;
     }
 
-    if (filtered && event->type == GDK_KEY_PRESS) {
+    if (filtered && type == GDK_KEY_PRESS) {
         if (!m_preeditChanged && m_confirmedComposition.isNull()) {
             m_composingTextCurrently = true;
-            m_lastFilteredKeyPressCodeWithNoResults = event->keyval;
+            m_lastFilteredKeyPressCodeWithNoResults = keyval;
             return;
         }
 
@@ -227,7 +234,7 @@
 
     // 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 (event->type == GDK_KEY_RELEASE && lastFilteredKeyPressCodeWithNoResults == event->keyval)
+    if (type == GDK_KEY_RELEASE && lastFilteredKeyPressCodeWithNoResults == keyval)
         return;
 
     // At this point a keystroke was either:
@@ -443,19 +450,31 @@
 #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(event->keyval), " text='", eventString, '\'', fakedString));
+        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(keyval), " text='", eventString, '\'', fakedString));
     else
-        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(event->keyval), fakedString));
+        m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(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(event->keyval), fakedString));
+    m_events.append(makeString("sendKeyEventWithCompositionResults type=", eventType, " keycode=", hex(keyval), fakedString));
 
     if (resultsToSend & Composition && !m_confirmedComposition.isNull())
         logConfirmCompositionForTesting();

Modified: trunk/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -205,16 +205,21 @@
 {
     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 ((event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_KP_Enter || event->keyval == GDK_KEY_ISO_Enter))
+    if ((keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter || keyval == GDK_KEY_ISO_Enter))
         return { "InsertNewLine" };
 
     // For keypress events, we want charCode(), but keyCode() does that.
-    unsigned mapKey = event->state << 16 | event->keyval;
+    unsigned mapKey = state << 16 | keyval;
     if (!mapKey)
         return { };
 

Modified: trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -55,7 +55,7 @@
 static bool isEventStop(GdkEventScroll* event)
 {
 #if GTK_CHECK_VERSION(3, 20, 0)
-    return event->is_stop;
+    return gdk_event_is_scroll_stop_event(reinterpret_cast<GdkEvent*>(event));
 #else
     return !event->delta_x && !event->delta_y;
 #endif
@@ -83,10 +83,12 @@
 {
     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 event->direction == GDK_SCROLL_SMOOTH && (source == GDK_SOURCE_TOUCHPAD || source == GDK_SOURCE_TOUCHSCREEN);
+    return direction == GDK_SCROLL_SMOOTH && (source == GDK_SOURCE_TOUCHPAD || source == GDK_SOURCE_TOUCHSCREEN);
 }
 
 static bool isTouchEvent(GdkEventScroll* event)
@@ -100,9 +102,11 @@
 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(event->delta_x, event->delta_y) * multiplier;
+    return -FloatSize(xDelta, yDelta) * multiplier;
 }
 
 bool ViewGestureController::handleScrollWheelEvent(GdkEventScroll* event)
@@ -183,13 +187,17 @@
         return false;
     }
 
-    double deltaX = -event->delta_x;
+    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;
     if (isTouchEvent(event))
         deltaX *= (double) Scrollbar::pixelsPerLineStep() / m_webPageProxy.viewSize().width();
     else
         deltaX *= gtkScrollDeltaMultiplier / swipeTouchpadBaseWidth;
 
-    Seconds time = Seconds::fromMilliseconds(event->time);
+    Seconds time = Seconds::fromMilliseconds(eventTime);
     if (time != m_prevTime)
         m_velocity = deltaX / (time - m_prevTime).milliseconds();
 

Modified: trunk/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp (246466 => 246467)


--- trunk/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp	2019-06-15 18:20:27 UTC (rev 246466)
+++ trunk/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp	2019-06-15 18:33:03 UTC (rev 246467)
@@ -95,11 +95,15 @@
 
 gboolean WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback(GtkWidget* treeView, GdkEventButton* event, WebPopupMenuProxyGtk* popupMenu)
 {
-    if (event->button != GDK_BUTTON_PRIMARY)
+    guint button;
+    gdk_event_get_button(reinterpret_cast<GdkEvent*>(event), &button);
+    if (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), event->x, event->y, &path.outPtr(), nullptr, nullptr, nullptr))
+    if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeView), x, y, &path.outPtr(), nullptr, nullptr, nullptr))
         return FALSE;
 
     return popupMenu->activateItemAtPath(path.get());
@@ -119,7 +123,9 @@
     if (!popupMenu->m_device)
         return FALSE;
 
-    if (event->keyval == GDK_KEY_Escape) {
+    guint keyval;
+    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
+    if (keyval == GDK_KEY_Escape) {
         popupMenu->hidePopupMenu();
         return TRUE;
     }
@@ -370,19 +376,22 @@
 
 Optional<unsigned> WebPopupMenuProxyGtk::typeAheadFindIndex(GdkEventKey* event)
 {
-    gunichar keychar = gdk_keyval_to_unicode(event->keyval);
+    guint keyval;
+    gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval);
+    gunichar keychar = gdk_keyval_to_unicode(keyval);
     if (!g_unichar_isprint(keychar))
         return WTF::nullopt;
 
-    if (event->time < m_previousKeyEventTime)
+    uint32_t time = gdk_event_get_time(reinterpret_cast<GdkEvent*>(event));
+    if (time < m_previousKeyEventTime)
         return WTF::nullopt;
 
     static const uint32_t typeaheadTimeoutMs = 1000;
-    if (event->time - m_previousKeyEventTime > typeaheadTimeoutMs) {
+    if (time - m_previousKeyEventTime > typeaheadTimeoutMs) {
         if (m_currentSearchString)
             g_string_truncate(m_currentSearchString, 0);
     }
-    m_previousKeyEventTime = event->time;
+    m_previousKeyEventTime = time;
 
     if (!m_currentSearchString)
         m_currentSearchString = g_string_new(nullptr);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to