WebKit Bugzilla
Attachment 372116 Details for
Bug 198829
: [GTK] Stop accessing GdkEvent fields when possible
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-198829-20190614101915.patch (text/plain), 40.91 KB, created by
Ludovico de Nittis
on 2019-06-14 01:19:16 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Ludovico de Nittis
Created:
2019-06-14 01:19:16 PDT
Size:
40.91 KB
patch
obsolete
>Subversion Revision: 246397 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index da8ea140b1066f8d346554e4841072ffe34e899f..c787cd643e6605f0da9d2625a46774668ee713e9 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,23 @@ >+2019-06-13 Ludovico de Nittis <ludovico.denittis@collabora.com> >+ >+ [GTK] Stop accessing GdkEvent fields when possible >+ https://bugs.webkit.org/show_bug.cgi?id=198829 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-12 Antoine Quint <graouts@apple.com> > > [WHLSL] Hook up compute >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 0d99009f46444ce0945cd803b716d6aa1b115639..0b3616e9a3eb5dab0c06b35592b96136fa4f0f12 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,46 @@ >+2019-06-13 Ludovico de Nittis <ludovico.denittis@collabora.com> >+ >+ [GTK] Stop accessing GdkEvent fields when possible >+ https://bugs.webkit.org/show_bug.cgi?id=198829 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ 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-12 Antoine Quint <graouts@apple.com> > > Show the web page URL when sharing an AR model >diff --git a/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp b/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp >index 5b67a59cb0c3852cb1609989258e5799754f4bc8..81a74726adce878f93f8da1aa78a80b6fea51f6c 100644 >--- a/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp >+++ b/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp >@@ -1324,21 +1324,33 @@ 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; >- 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 @@ 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; >diff --git a/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp b/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp >index 4fba3bd53d4ec483f69f71d51ac46ba564915f7f..4f52a2bfed17c7dbc28a2ac6a583c51ed1750da6 100644 >--- a/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp >+++ b/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp >@@ -39,45 +39,65 @@ namespace WebCore { > // Keep this in sync with the other platform event constructors > PlatformMouseEvent::PlatformMouseEvent(GdkEventButton* event) > { >+ gdouble x, y, rootX, rootY; >+ GdkModifierType state; >+ GdkEventType type; >+ 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((int)x, (int)y); >+ m_globalPosition = IntPoint((int)rootX, (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) >+ type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)); >+#else >+ 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; > >diff --git a/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp b/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp >index f48f75a5171ea9fb714e8440d3f0450b853c6ce3..30dec1718922e2d892d5a4efb3b40545bfd089b9 100644 >--- a/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp >+++ b/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp >@@ -42,26 +42,34 @@ 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 (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 @@ PlatformWheelEvent::PlatformWheelEvent(GdkEventScroll* event) > #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 @@ PlatformWheelEvent::PlatformWheelEvent(GdkEventScroll* event) > #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; > >diff --git a/Source/WebKit/Shared/gtk/WebEventFactory.cpp b/Source/WebKit/Shared/gtk/WebEventFactory.cpp >index 3c338281419491e431872e33d517ca3ba7d9c75c..5932a2963a1d3f3452b553acf82167114b0167a7 100644 >--- a/Source/WebKit/Shared/gtk/WebEventFactory.cpp >+++ b/Source/WebKit/Shared/gtk/WebEventFactory.cpp >@@ -73,8 +73,12 @@ static inline OptionSet<WebEvent::Modifier> modifiersForEvent(const GdkEvent* ev > 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 @@ static inline WebMouseEvent::Button buttonForEvent(const GdkEvent* event) > 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 @@ 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); >- 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 @@ WebMouseEvent WebEventFactory::createWebMouseEvent(const GdkEvent* event, int cu > 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 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 @@ 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( >- 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 @@ WebTouchEvent WebEventFactory::createWebTouchEvent(const GdkEvent* event, Vector > { > #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; >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp >index 59683a5c9ae5482c501871106f5601996b6f7314..31e0973fe1003c6ea6523061a67c949d53ebd6b7 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp >@@ -92,7 +92,7 @@ static const unsigned boxSpace = 6; > > 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); >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp >index 5678f01a07e757194bb7e284e282a01fdd8fa211..d504a11364058f8d04ffda89e6471b0db91f7df4 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp >@@ -46,7 +46,9 @@ static void webkitScriptDialogImplClose(WebKitScriptDialogImpl* dialog) > > 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; > } >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >index b23cad1913199426d41e08e6a33f5d12b896c02f..25b937d297ad3a7b36369c02d6d3a822ca3e0ae9 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp >@@ -118,19 +118,27 @@ public: > 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 @@ 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 ((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 @@ static gboolean webkitWebViewBaseKeyPressEvent(GtkWidget* widget, GdkEventKey* k > > #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 @@ static void webkitWebViewBaseHandleMouseEvent(WebKitWebViewBase* webViewBase, Gd > 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 @@ 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 (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 @@ 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 = 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 @@ static gboolean webkitWebViewBaseCrossingNotifyEvent(GtkWidget* widget, GdkEvent > > 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 inline WebPlatformTouchPoint::TouchPointState touchPointStateForEvents(co > 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 @@ 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)); > >- 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 @@ private: > > 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 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 >+#endif // HAVE(GTK_GESTURES) > > return GDK_EVENT_PROPAGATE; > } >diff --git a/Source/WebKit/UIProcess/gtk/GestureController.cpp b/Source/WebKit/UIProcess/gtk/GestureController.cpp >index 5f58449102fb8e07b90f3d04de38dadb051f35c7..39fa737d40a838b3ccc7ec3a3845b8fb6388a86e 100644 >--- a/Source/WebKit/UIProcess/gtk/GestureController.cpp >+++ b/Source/WebKit/UIProcess/gtk/GestureController.cpp >@@ -53,7 +53,11 @@ 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(); > } > >diff --git a/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp b/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp >index f2b860f3bee52b03ef23a4aec8af5a5e4abd9e08..323a1185be5b2015aeea5dbc457fbb72e596bf2d 100644 >--- a/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp >+++ b/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp >@@ -198,7 +198,14 @@ void InputMethodFilter::filterKeyEvent(GdkEventKey* event, FilterKeyEventComplet > > 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 @@ void InputMethodFilter::filterKeyEvent(GdkEventKey* event, FilterKeyEventComplet > 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 @@ 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 (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 @@ 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(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(); >diff --git a/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp b/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp >index 4490ce6013119a954ca5370b854c5c88cba65dd0..573bafd48518dc7e7e1bd262b9560b02208f4a94 100644 >--- a/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp >+++ b/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp >@@ -205,16 +205,21 @@ 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 ((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 { }; > >diff --git a/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp b/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp >index 4bae03ab9dfc2ca0ee9a6a61cb6e1afd63155f4b..9ae34a7bdb73ce02033d55a1188c779c453fcf5a 100644 >--- a/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp >+++ b/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp >@@ -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 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 @@ 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 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 @@ 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(event->delta_x, event->delta_y) * multiplier; >+ return -FloatSize(xDelta, yDelta) * multiplier; > } > > bool ViewGestureController::handleScrollWheelEvent(GdkEventScroll* event) >@@ -183,13 +187,17 @@ bool ViewGestureController::SwipeProgressTracker::handleEvent(GdkEventScroll* ev > 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(); > >diff --git a/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp b/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp >index e74601cd095d7724c16b2e45241df76f58223356..afb86af2075f5ba2bd6970db3b3c494aef007939 100644 >--- a/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp >+++ b/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp >@@ -95,11 +95,15 @@ void WebPopupMenuProxyGtk::treeViewRowActivatedCallback(GtkTreeView*, GtkTreePat > > 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 @@ gboolean WebPopupMenuProxyGtk::keyPressEventCallback(GtkWidget* widget, GdkEvent > 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 @@ void WebPopupMenuProxyGtk::cancelTracking() > > 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);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 198829
:
372053
|
372059
|
372110
|
372112
|
372114
|
372116
|
372124
|
372243