Changeset 246496 in webkit
- Timestamp:
- Jun 17, 2019 8:01:09 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r246494 r246496 1 2019-06-17 Ludovico de Nittis <ludovico.denittis@collabora.com> 2 3 [GTK] Stop accessing GdkEvent fields when possible 4 https://bugs.webkit.org/show_bug.cgi?id=198829 5 6 Reviewed by Michael Catanzaro. 7 8 Direct access to GdkEvent structs is no longer possible in GTK 4. 9 10 No behaviour changes. 11 12 * platform/gtk/PlatformKeyboardEventGtk.cpp: 13 (WebCore::eventTypeForGdkKeyEvent): 14 (WebCore::modifiersForGdkKeyEvent): 15 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent): 16 * platform/gtk/PlatformMouseEventGtk.cpp: 17 (WebCore::PlatformMouseEvent::PlatformMouseEvent): 18 * platform/gtk/PlatformWheelEventGtk.cpp: 19 (WebCore::PlatformWheelEvent::PlatformWheelEvent): 20 1 21 2019-06-17 Carlos Garcia Campos <cgarcia@igalia.com> 2 22 -
trunk/Source/WebCore/platform/gtk/PlatformKeyboardEventGtk.cpp
r246494 r246496 1325 1325 static PlatformEvent::Type eventTypeForGdkKeyEvent(GdkEventKey* event) 1326 1326 { 1327 #if GTK_CHECK_VERSION(3, 10, 0) 1328 return gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)) == GDK_KEY_RELEASE ? PlatformEvent::KeyUp : PlatformEvent::KeyDown; 1329 #else 1327 1330 return event->type == GDK_KEY_RELEASE ? PlatformEvent::KeyUp : PlatformEvent::KeyDown; 1331 #endif 1328 1332 } 1329 1333 1330 1334 static OptionSet<PlatformEvent::Modifier> modifiersForGdkKeyEvent(GdkEventKey* event) 1331 1335 { 1336 GdkModifierType state; 1337 guint keyval; 1332 1338 OptionSet<PlatformEvent::Modifier> modifiers; 1333 if (event->state & GDK_SHIFT_MASK || event->keyval == GDK_KEY_3270_BackTab) 1339 gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state); 1340 #ifndef GTK_API_VERSION_2 1341 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 1342 #else 1343 keyval = event->keyval; 1344 #endif 1345 if (state & GDK_SHIFT_MASK || keyval == GDK_KEY_3270_BackTab) 1334 1346 modifiers.add(PlatformEvent::Modifier::ShiftKey); 1335 if ( event->state & GDK_CONTROL_MASK)1347 if (state & GDK_CONTROL_MASK) 1336 1348 modifiers.add(PlatformEvent::Modifier::ControlKey); 1337 if ( event->state & GDK_MOD1_MASK)1349 if (state & GDK_MOD1_MASK) 1338 1350 modifiers.add(PlatformEvent::Modifier::AltKey); 1339 if ( event->state & GDK_META_MASK)1351 if (state & GDK_META_MASK) 1340 1352 modifiers.add(PlatformEvent::Modifier::MetaKey); 1341 if ( event->state & GDK_LOCK_MASK)1353 if (state & GDK_LOCK_MASK) 1342 1354 modifiers.add(PlatformEvent::Modifier::CapsLockKey); 1343 1355 return modifiers; … … 1347 1359 PlatformKeyboardEvent::PlatformKeyboardEvent(GdkEventKey* event, const CompositionResults& compositionResults) 1348 1360 : PlatformEvent(eventTypeForGdkKeyEvent(event), modifiersForGdkKeyEvent(event), wallTimeForEvent(event)) 1349 , m_text(compositionResults.simpleString.length() ? compositionResults.simpleString : singleCharacterString(event->keyval))1350 , m_unmodifiedText(m_text)1351 , m_key(keyValueForGdkKeyCode(event->keyval))1352 , m_code(keyCodeForHardwareKeyCode(event->hardware_keycode))1353 , m_keyIdentifier(keyIdentifierForGdkKeyCode(event->keyval))1354 , m_windowsVirtualKeyCode(windowsKeyCodeForGdkKeyCode(event->keyval))1355 1361 , m_handledByInputMethod(false) 1356 1362 , m_autoRepeat(false) 1357 , m_isKeypad(event->keyval >= GDK_KEY_KP_Space && event->keyval <= GDK_KEY_KP_9)1358 1363 , m_isSystemKey(false) 1359 1364 , m_gdkEventKey(event) 1360 1365 , m_compositionResults(compositionResults) 1361 1366 { 1367 guint keyval; 1368 guint16 keycode; 1369 #ifndef GTK_API_VERSION_2 1370 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 1371 gdk_event_get_keycode(reinterpret_cast<GdkEvent*>(event), &keycode); 1372 #else 1373 keyval = event->keyval; 1374 keycode = event->hardware_keycode; 1375 #endif 1376 1377 m_text = compositionResults.simpleString.length() ? compositionResults.simpleString : singleCharacterString(keyval); 1378 m_unmodifiedText = m_text; 1379 m_key = keyValueForGdkKeyCode(keyval); 1380 m_code = keyCodeForHardwareKeyCode(keycode); 1381 m_keyIdentifier = keyIdentifierForGdkKeyCode(keyval); 1382 m_windowsVirtualKeyCode = windowsKeyCodeForGdkKeyCode(keyval); 1383 m_isKeypad = keyval >= GDK_KEY_KP_Space && keyval <= GDK_KEY_KP_9; 1384 1362 1385 // To match the behavior of IE, we return VK_PROCESSKEY for keys that triggered composition results. 1363 1386 if (compositionResults.compositionUpdated()) -
trunk/Source/WebCore/platform/gtk/PlatformMouseEventGtk.cpp
r246494 r246496 40 40 PlatformMouseEvent::PlatformMouseEvent(GdkEventButton* event) 41 41 { 42 gdouble x, y, rootX, rootY; 43 GdkModifierType state; 44 guint button; 45 46 gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y); 47 gdk_event_get_root_coords(reinterpret_cast<GdkEvent*>(event), &rootX, &rootY); 48 gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state); 49 #ifndef GTK_API_VERSION_2 50 gdk_event_get_button(reinterpret_cast<GdkEvent*>(event), &button); 51 #else 52 button = event->button; 53 #endif 54 42 55 m_timestamp = wallTimeForEvent(event); 43 m_position = IntPoint( (int)event->x, (int)event->y);44 m_globalPosition = IntPoint( (int)event->x_root, (int)event->y_root);56 m_position = IntPoint(static_cast<int>(x), static_cast<int>(y)); 57 m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY)); 45 58 m_button = NoButton; 46 59 m_clickCount = 0; 47 60 m_modifierFlags = 0; 48 61 49 if ( event->state & GDK_SHIFT_MASK)62 if (state & GDK_SHIFT_MASK) 50 63 m_modifiers.add(PlatformEvent::Modifier::ShiftKey); 51 if ( event->state & GDK_CONTROL_MASK)64 if (state & GDK_CONTROL_MASK) 52 65 m_modifiers.add(PlatformEvent::Modifier::ControlKey); 53 if ( event->state & GDK_MOD1_MASK)66 if (state & GDK_MOD1_MASK) 54 67 m_modifiers.add(PlatformEvent::Modifier::AltKey); 55 if ( event->state & GDK_META_MASK)68 if (state & GDK_META_MASK) 56 69 m_modifiers.add(PlatformEvent::Modifier::MetaKey); 57 if (PlatformKeyboardEvent::modifiersContainCapsLock( event->state))70 if (PlatformKeyboardEvent::modifiersContainCapsLock(state)) 58 71 m_modifiers.add(PlatformEvent::Modifier::CapsLockKey); 59 72 60 switch (event->type) { 73 #if GTK_CHECK_VERSION(3, 10, 0) 74 GdkEventType type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)); 75 #else 76 GdkEventType type = event->type; 77 #endif 78 79 switch (type) { 61 80 case GDK_BUTTON_PRESS: 62 81 case GDK_2BUTTON_PRESS: … … 64 83 case GDK_BUTTON_RELEASE: 65 84 m_type = PlatformEvent::MousePressed; 66 if ( event->type == GDK_BUTTON_RELEASE) {85 if (type == GDK_BUTTON_RELEASE) { 67 86 m_type = PlatformEvent::MouseReleased; 68 87 m_clickCount = 0; 69 } else if ( event->type == GDK_BUTTON_PRESS)88 } else if (type == GDK_BUTTON_PRESS) 70 89 m_clickCount = 1; 71 else if ( event->type == GDK_2BUTTON_PRESS)90 else if (type == GDK_2BUTTON_PRESS) 72 91 m_clickCount = 2; 73 else if ( event->type == GDK_3BUTTON_PRESS)92 else if (type == GDK_3BUTTON_PRESS) 74 93 m_clickCount = 3; 75 94 76 if ( event->button == 1)95 if (button == 1) 77 96 m_button = LeftButton; 78 else if ( event->button == 2)97 else if (button == 2) 79 98 m_button = MiddleButton; 80 else if ( event->button == 3)99 else if (button == 3) 81 100 m_button = RightButton; 82 101 break; … … 89 108 PlatformMouseEvent::PlatformMouseEvent(GdkEventMotion* motion) 90 109 { 110 gdouble x, y, rootX, rootY; 111 GdkModifierType state; 112 gdk_event_get_coords(reinterpret_cast<GdkEvent*>(motion), &x, &y); 113 gdk_event_get_root_coords(reinterpret_cast<GdkEvent*>(motion), &rootX, &rootY); 114 gdk_event_get_state(reinterpret_cast<GdkEvent*>(motion), &state); 115 m_position = IntPoint(static_cast<int>(x), static_cast<int>(y)); 116 m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY)); 91 117 m_timestamp = wallTimeForEvent(motion); 92 m_position = IntPoint((int)motion->x, (int)motion->y);93 m_globalPosition = IntPoint((int)motion->x_root, (int)motion->y_root);94 118 m_button = NoButton; 95 119 m_clickCount = 0; 96 120 m_modifierFlags = 0; 97 121 98 if ( motion->state & GDK_SHIFT_MASK)122 if (state & GDK_SHIFT_MASK) 99 123 m_modifiers.add(PlatformEvent::Modifier::ShiftKey); 100 if ( motion->state & GDK_CONTROL_MASK)124 if (state & GDK_CONTROL_MASK) 101 125 m_modifiers.add(PlatformEvent::Modifier::ControlKey); 102 if ( motion->state & GDK_MOD1_MASK)126 if (state & GDK_MOD1_MASK) 103 127 m_modifiers.add(PlatformEvent::Modifier::AltKey); 104 if ( motion->state & GDK_META_MASK)128 if (state & GDK_META_MASK) 105 129 m_modifiers.add(PlatformEvent::Modifier::MetaKey); 106 if (PlatformKeyboardEvent::modifiersContainCapsLock( motion->state))130 if (PlatformKeyboardEvent::modifiersContainCapsLock(state)) 107 131 m_modifiers.add(PlatformEvent::Modifier::CapsLockKey); 108 132 109 switch (motion->type) { 133 #if GTK_CHECK_VERSION(3, 10, 0) 134 GdkEventType type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(motion)); 135 #else 136 GdkEventType type = motion->type; 137 #endif 138 139 switch (type) { 110 140 case GDK_MOTION_NOTIFY: 111 141 m_type = PlatformEvent::MouseMoved; … … 117 147 }; 118 148 119 if ( motion->state & GDK_BUTTON1_MASK)149 if (state & GDK_BUTTON1_MASK) 120 150 m_button = LeftButton; 121 else if ( motion->state & GDK_BUTTON2_MASK)151 else if (state & GDK_BUTTON2_MASK) 122 152 m_button = MiddleButton; 123 else if ( motion->state & GDK_BUTTON3_MASK)153 else if (state & GDK_BUTTON3_MASK) 124 154 m_button = RightButton; 125 155 } -
trunk/Source/WebCore/platform/gtk/PlatformWheelEventGtk.cpp
r246494 r246496 43 43 { 44 44 static const float delta = 1; 45 GdkModifierType state; 45 46 46 47 m_type = PlatformEvent::Wheel; 47 48 m_timestamp = wallTimeForEvent(event); 49 gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state); 48 50 49 if ( event->state & GDK_SHIFT_MASK)51 if (state & GDK_SHIFT_MASK) 50 52 m_modifiers.add(Modifier::ShiftKey); 51 if ( event->state & GDK_CONTROL_MASK)53 if (state & GDK_CONTROL_MASK) 52 54 m_modifiers.add(Modifier::ControlKey); 53 if ( event->state & GDK_MOD1_MASK)55 if (state & GDK_MOD1_MASK) 54 56 m_modifiers.add(Modifier::AltKey); 55 if ( event->state & GDK_META_MASK)57 if (state & GDK_META_MASK) 56 58 m_modifiers.add(Modifier::MetaKey); 57 if (PlatformKeyboardEvent::modifiersContainCapsLock( event->state))59 if (PlatformKeyboardEvent::modifiersContainCapsLock(state)) 58 60 m_modifiers.add(PlatformEvent::Modifier::CapsLockKey); 59 61 60 62 m_deltaX = 0; 61 63 m_deltaY = 0; 64 GdkScrollDirection direction; 65 #ifndef GTK_API_VERSION_2 66 if (!gdk_event_get_scroll_direction(reinterpret_cast<GdkEvent*>(event), &direction)) { 67 gdouble deltaX, deltaY; 68 if (gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), &deltaX, &deltaY)) { 69 m_deltaX = -deltaX; 70 m_deltaY = -deltaY; 71 } 72 } 73 #else 74 direction = event->direction; 75 #endif 62 76 63 77 // Docs say an upwards scroll (away from the user) has a positive delta 64 switch (event->direction) { 78 if (!m_deltaX && !m_deltaY) { 79 switch (direction) { 65 80 case GDK_SCROLL_UP: 66 81 m_deltaY = delta; … … 75 90 m_deltaX = -delta; 76 91 break; 77 #if GTK_CHECK_VERSION(3, 3, 18) 78 case GDK_SCROLL_SMOOTH: { 79 gdouble deltaX, deltaY; 80 gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), &deltaX, &deltaY); 81 m_deltaX = -deltaX; 82 m_deltaY = -deltaY; 83 } 84 break; 85 #endif 92 default: 93 ASSERT_NOT_REACHED(); 94 } 86 95 } 87 96 m_wheelTicksX = m_deltaX; … … 91 100 #ifndef GTK_API_VERSION_2 92 101 #if GTK_CHECK_VERSION(3, 20, 0) 93 m_phase = event->is_stop?102 m_phase = gdk_event_is_scroll_stop_event(reinterpret_cast<GdkEvent*>(event)) ? 94 103 PlatformWheelEventPhaseEnded : 95 104 PlatformWheelEventPhaseChanged; 96 105 #else 97 m_phase = event->direction == GDK_SCROLL_SMOOTH && !m_deltaX && !m_deltaY ?106 m_phase = direction == GDK_SCROLL_SMOOTH && !m_deltaX && !m_deltaY ? 98 107 PlatformWheelEventPhaseEnded : 99 108 PlatformWheelEventPhaseChanged; … … 104 113 #endif // ENABLE(ASYNC_SCROLLING) 105 114 106 m_position = IntPoint(static_cast<int>(event->x), static_cast<int>(event->y)); 107 m_globalPosition = IntPoint(static_cast<int>(event->x_root), static_cast<int>(event->y_root)); 115 gdouble x, y, rootX, rootY; 116 gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y); 117 gdk_event_get_root_coords(reinterpret_cast<GdkEvent*>(event), &rootX, &rootY); 118 119 m_position = IntPoint(static_cast<int>(x), static_cast<int>(y)); 120 m_globalPosition = IntPoint(static_cast<int>(rootX), static_cast<int>(rootY)); 108 121 m_granularity = ScrollByPixelWheelEvent; 109 122 m_directionInvertedFromDevice = false; -
trunk/Source/WebKit/ChangeLog
r246495 r246496 1 2019-06-17 Ludovico de Nittis <ludovico.denittis@collabora.com> 2 3 [GTK] Stop accessing GdkEvent fields when possible 4 https://bugs.webkit.org/show_bug.cgi?id=198829 5 6 Reviewed by Michael Catanzaro. 7 8 Direct access to GdkEvent structs is no longer possible in GTK 4. 9 10 * Shared/gtk/WebEventFactory.cpp: 11 (WebKit::buttonForEvent): 12 (WebKit::WebEventFactory::createWebMouseEvent): 13 (WebKit::WebEventFactory::createWebWheelEvent): 14 (WebKit::WebEventFactory::createWebKeyboardEvent): 15 (WebKit::WebEventFactory::createWebTouchEvent): 16 * UIProcess/API/gtk/WebKitEmojiChooser.cpp: 17 * UIProcess/API/gtk/WebKitScriptDialogImpl.cpp: 18 (webkitScriptDialogImplKeyPressEvent): 19 * UIProcess/API/gtk/WebKitWebViewBase.cpp: 20 (ClickCounter::currentClickCountForGdkButtonEvent): 21 (webkitWebViewBaseKeyPressEvent): 22 (webkitWebViewBaseHandleMouseEvent): 23 (webkitWebViewBaseCrossingNotifyEvent): 24 (webkitWebViewBaseGetTouchPointsForEvent): 25 (webkitWebViewBaseTouchEvent): 26 (webkitWebViewBaseEvent): 27 * UIProcess/gtk/GestureController.cpp: 28 (WebKit::GestureController::handleEvent): 29 * UIProcess/gtk/InputMethodFilter.cpp: 30 (WebKit::InputMethodFilter::filterKeyEvent): 31 (WebKit::InputMethodFilter::logHandleKeyboardEventForTesting): 32 (WebKit::InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting): 33 * UIProcess/gtk/KeyBindingTranslator.cpp: 34 (WebKit::KeyBindingTranslator::commandsForKeyEvent): 35 * UIProcess/gtk/ViewGestureControllerGtk.cpp: 36 (WebKit::isEventStop): 37 (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventCanInfluenceSwipe): 38 (WebKit::ViewGestureController::PendingSwipeTracker::scrollEventGetScrollingDeltas): 39 (WebKit::ViewGestureController::SwipeProgressTracker::handleEvent): 40 * UIProcess/gtk/WebPopupMenuProxyGtk.cpp: 41 (WebKit::WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback): 42 (WebKit::WebPopupMenuProxyGtk::keyPressEventCallback): 43 1 44 2019-06-17 Carlos Garcia Campos <cgarcia@igalia.com> 2 45 -
trunk/Source/WebKit/Shared/gtk/WebEventFactory.cpp
r246494 r246496 74 74 { 75 75 unsigned button = 0; 76 77 switch (event->type) { 76 #if GTK_CHECK_VERSION(3, 10, 0) 77 GdkEventType type = gdk_event_get_event_type(event); 78 #else 79 GdkEventType type = event->type; 80 #endif 81 switch (type) { 78 82 case GDK_ENTER_NOTIFY: 79 83 case GDK_LEAVE_NOTIFY: … … 94 98 case GDK_3BUTTON_PRESS: 95 99 case GDK_BUTTON_RELEASE: 96 if (event->button.button == 1) 100 guint eventButton; 101 #ifndef GTK_API_VERSION_2 102 gdk_event_get_button(event, &eventButton); 103 #else 104 eventButton = event->button; 105 #endif 106 if (eventButton == 1) 97 107 button = WebMouseEvent::LeftButton; 98 else if (event ->button.button == 2)108 else if (eventButton == 2) 99 109 button = WebMouseEvent::MiddleButton; 100 else if (event ->button.button == 3)110 else if (eventButton == 3) 101 111 button = WebMouseEvent::RightButton; 102 112 break; … … 142 152 gdk_event_get_state(event, &state); 143 153 154 guint eventButton; 155 #ifndef GTK_API_VERSION_2 156 gdk_event_get_button(event, &eventButton); 157 #else 158 eventButton = event->button; 159 #endif 160 144 161 WebEvent::Type type = static_cast<WebEvent::Type>(0); 145 switch (event->type) { 162 163 #if GTK_CHECK_VERSION(3, 10, 0) 164 GdkEventType eventType = gdk_event_get_event_type(event); 165 #else 166 GdkEventType eventType = event->type; 167 #endif 168 switch (eventType) { 146 169 case GDK_MOTION_NOTIFY: 147 170 case GDK_ENTER_NOTIFY: … … 153 176 case GDK_3BUTTON_PRESS: { 154 177 type = WebEvent::MouseDown; 155 auto modifier = stateModifierForGdkButton(event ->button.button);178 auto modifier = stateModifierForGdkButton(eventButton); 156 179 state = static_cast<GdkModifierType>(state | modifier); 157 180 break; … … 159 182 case GDK_BUTTON_RELEASE: { 160 183 type = WebEvent::MouseUp; 161 auto modifier = stateModifierForGdkButton(event ->button.button);184 auto modifier = stateModifierForGdkButton(eventButton); 162 185 state = static_cast<GdkModifierType>(state & ~modifier); 163 186 break; … … 204 227 { 205 228 double x, y, xRoot, yRoot; 229 GdkScrollDirection direction; 230 FloatSize wheelTicks = FloatSize(0, 0); 206 231 gdk_event_get_coords(event, &x, &y); 207 232 gdk_event_get_root_coords(event, &xRoot, &yRoot); 208 209 FloatSize wheelTicks; 210 switch (event->scroll.direction) { 211 case GDK_SCROLL_UP: 212 wheelTicks = FloatSize(0, 1); 213 break; 214 case GDK_SCROLL_DOWN: 215 wheelTicks = FloatSize(0, -1); 216 break; 217 case GDK_SCROLL_LEFT: 218 wheelTicks = FloatSize(1, 0); 219 break; 220 case GDK_SCROLL_RIGHT: 221 wheelTicks = FloatSize(-1, 0); 222 break; 223 #if GTK_CHECK_VERSION(3, 3, 18) 224 case GDK_SCROLL_SMOOTH: { 225 double deltaX, deltaY; 226 gdk_event_get_scroll_deltas(event, &deltaX, &deltaY); 233 #ifndef GTK_API_VERSION_2 234 if (!gdk_event_get_scroll_direction(event, &direction)) { 235 double deltaX, deltaY; 236 if (gdk_event_get_scroll_deltas(event, &deltaX, &deltaY)) 227 237 wheelTicks = FloatSize(-deltaX, -deltaY); 238 } 239 #else 240 direction = event->scroll.direction; 241 #endif 242 243 if (wheelTicks.isZero()) { 244 switch (direction) { 245 case GDK_SCROLL_UP: 246 wheelTicks = FloatSize(0, 1); 247 break; 248 case GDK_SCROLL_DOWN: 249 wheelTicks = FloatSize(0, -1); 250 break; 251 case GDK_SCROLL_LEFT: 252 wheelTicks = FloatSize(1, 0); 253 break; 254 case GDK_SCROLL_RIGHT: 255 wheelTicks = FloatSize(-1, 0); 256 break; 257 default: 258 ASSERT_NOT_REACHED(); 228 259 } 229 break;230 #endif231 default:232 ASSERT_NOT_REACHED();233 260 } 234 261 … … 252 279 WebKeyboardEvent WebEventFactory::createWebKeyboardEvent(const GdkEvent* event, const WebCore::CompositionResults& compositionResults, Vector<String>&& commands) 253 280 { 281 guint keyval; 282 guint16 keycode; 283 #ifndef GTK_API_VERSION_2 284 gdk_event_get_keyval(event, &keyval); 285 gdk_event_get_keycode(event, &keycode); 286 #else 287 keyval = event->keyval; 288 keycode = event->hardware_keycode; 289 #endif 290 #if GTK_CHECK_VERSION(3, 10, 0) 291 GdkEventType type = gdk_event_get_event_type(event); 292 #else 293 GdkEventType type = event->type; 294 #endif 295 254 296 return WebKeyboardEvent( 255 event->type == GDK_KEY_RELEASE ? WebEvent::KeyUp : WebEvent::KeyDown,256 compositionResults.simpleString.length() ? compositionResults.simpleString : PlatformKeyboardEvent::singleCharacterString( event->key.keyval),257 PlatformKeyboardEvent::keyValueForGdkKeyCode( event->key.keyval),258 PlatformKeyboardEvent::keyCodeForHardwareKeyCode( event->key.hardware_keycode),259 PlatformKeyboardEvent::keyIdentifierForGdkKeyCode( event->key.keyval),260 PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode( event->key.keyval),261 static_cast<int>( event->key.keyval),297 type == GDK_KEY_RELEASE ? WebEvent::KeyUp : WebEvent::KeyDown, 298 compositionResults.simpleString.length() ? compositionResults.simpleString : PlatformKeyboardEvent::singleCharacterString(keyval), 299 PlatformKeyboardEvent::keyValueForGdkKeyCode(keyval), 300 PlatformKeyboardEvent::keyCodeForHardwareKeyCode(keycode), 301 PlatformKeyboardEvent::keyIdentifierForGdkKeyCode(keyval), 302 PlatformKeyboardEvent::windowsKeyCodeForGdkKeyCode(keyval), 303 static_cast<int>(keyval), 262 304 compositionResults.compositionUpdated(), 263 305 WTFMove(commands), 264 isGdkKeyCodeFromKeyPad( event->key.keyval),306 isGdkKeyCodeFromKeyPad(keyval), 265 307 modifiersForEvent(event), 266 308 wallTimeForEvent(event)); … … 272 314 #ifndef GTK_API_VERSION_2 273 315 WebEvent::Type type = WebEvent::NoType; 274 switch (event->type) { 316 #if GTK_CHECK_VERSION(3, 10, 0) 317 GdkEventType eventType = gdk_event_get_event_type(event); 318 #else 319 GdkEventType eventType = event->type; 320 #endif 321 switch (eventType) { 275 322 case GDK_TOUCH_BEGIN: 276 323 type = WebEvent::TouchStart; -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitEmojiChooser.cpp
r246494 r246496 93 93 static void emojiHovered(GtkWidget* widget, GdkEvent* event) 94 94 { 95 if ( event->type== GDK_ENTER_NOTIFY)95 if (gdk_event_get_event_type(event) == GDK_ENTER_NOTIFY) 96 96 gtk_widget_set_state_flags(widget, GTK_STATE_FLAG_PRELIGHT, FALSE); 97 97 else -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitScriptDialogImpl.cpp
r246494 r246496 47 47 static gboolean webkitScriptDialogImplKeyPressEvent(GtkWidget* widget, GdkEventKey* keyEvent) 48 48 { 49 if (keyEvent->keyval == GDK_KEY_Escape) { 49 guint keyval; 50 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(keyEvent), &keyval); 51 if (keyval == GDK_KEY_Escape) { 50 52 webkitScriptDialogImplClose(WEBKIT_SCRIPT_DIALOG_IMPL(widget)); 51 53 return GDK_EVENT_STOP; -
trunk/Source/WebKit/UIProcess/API/gtk/WebKitWebViewBase.cpp
r246494 r246496 119 119 } 120 120 121 if ((event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS) 122 || ((std::abs(event->button.x - previousClickPoint.x()) < doubleClickDistance) 123 && (std::abs(event->button.y - previousClickPoint.y()) < doubleClickDistance) 121 GdkEventType type; 122 guint button; 123 double x, y; 124 gdk_event_get_coords(event, &x, &y); 125 gdk_event_get_button(event, &button); 126 #if GTK_CHECK_VERSION(3, 10, 0) 127 type = gdk_event_get_event_type(event); 128 #else 129 type = event->type; 130 #endif 131 if ((type == GDK_2BUTTON_PRESS || type == GDK_3BUTTON_PRESS) 132 || ((std::abs(x - previousClickPoint.x()) < doubleClickDistance) 133 && (std::abs(y - previousClickPoint.y()) < doubleClickDistance) 124 134 && (eventTime - previousClickTime < static_cast<unsigned>(doubleClickTime)) 125 && ( event->button.button == previousClickButton)))135 && (button == previousClickButton))) 126 136 currentClickCount++; 127 137 else 128 138 currentClickCount = 1; 129 139 130 double x, y;131 gdk_event_get_coords(event, &x, &y);132 140 previousClickPoint = IntPoint(x, y); 133 previousClickButton = event->button.button;141 previousClickButton = button; 134 142 previousClickTime = eventTime; 135 143 … … 740 748 WebKitWebViewBasePrivate* priv = webViewBase->priv; 741 749 750 GdkModifierType state; 751 guint keyval; 752 gdk_event_get_state(reinterpret_cast<GdkEvent*>(keyEvent), &state); 753 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(keyEvent), &keyval); 754 742 755 #if ENABLE(DEVELOPER_MODE) && OS(LINUX) 743 if (( keyEvent->state & GDK_CONTROL_MASK) && (keyEvent->state & GDK_SHIFT_MASK) && keyEvent->keyval == GDK_KEY_G) {756 if ((state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK) && keyval == GDK_KEY_G) { 744 757 auto& preferences = priv->pageProxy->preferences(); 745 758 preferences.setResourceUsageOverlayVisible(!preferences.resourceUsageOverlayVisible()); … … 754 767 #if ENABLE(FULLSCREEN_API) 755 768 if (priv->fullScreenModeActive) { 756 switch (key Event->keyval) {769 switch (keyval) { 757 770 case GDK_KEY_Escape: 758 771 case GDK_KEY_f: … … 810 823 811 824 int clickCount = 0; 812 813 switch (event->type) { 825 #if GTK_CHECK_VERSION(3, 10, 0) 826 GdkEventType eventType = gdk_event_get_event_type(event); 827 #else 828 GdkEventType eventType = event->type; 829 #endif 830 switch (eventType) { 814 831 case GDK_BUTTON_PRESS: 815 832 case GDK_2BUTTON_PRESS: … … 826 843 priv->inputMethodFilter.notifyMouseButtonPress(); 827 844 845 guint button; 846 gdk_event_get_button(event, &button); 828 847 // If it's a right click event save it as a possible context menu event. 829 if ( event->button.button == GDK_BUTTON_SECONDARY)848 if (button == GDK_BUTTON_SECONDARY) 830 849 priv->contextMenuEvent.reset(gdk_event_copy(event)); 831 850 … … 976 995 GtkAllocation allocation; 977 996 gtk_widget_get_allocation(widget, &allocation); 997 double xEvent, yEvent; 998 gdk_event_get_coords(reinterpret_cast<GdkEvent*>(crossingEvent), &xEvent, &yEvent); 978 999 double width = allocation.width; 979 1000 double height = allocation.height; 980 double x = crossingEvent->x;981 double y = crossingEvent->y;1001 double x = xEvent; 1002 double y = yEvent; 982 1003 if (x < 0 && x > -1) 983 1004 x = -1; … … 991 1012 GdkEvent* event = reinterpret_cast<GdkEvent*>(crossingEvent); 992 1013 GUniquePtr<GdkEvent> copiedEvent; 993 if (x != crossingEvent->x || y != crossingEvent->y) {1014 if (x != xEvent || y != yEvent) { 994 1015 copiedEvent.reset(gdk_event_copy(event)); 995 1016 copiedEvent->crossing.x = x; … … 1037 1058 { 1038 1059 WebKitWebViewBasePrivate* priv = webViewBase->priv; 1039 bool touchEnd = (event->type == GDK_TOUCH_END) || (event->type == GDK_TOUCH_CANCEL); 1060 #if GTK_CHECK_VERSION(3, 10, 0) 1061 GdkEventType type = gdk_event_get_event_type(event); 1062 #else 1063 GdkEventType type = event->type; 1064 #endif 1065 bool touchEnd = (type == GDK_TOUCH_END) || (type == GDK_TOUCH_CANCEL); 1040 1066 touchPoints.reserveInitialCapacity(touchEnd ? priv->touchEvents.size() + 1 : priv->touchEvents.size()); 1041 1067 … … 1059 1085 uint32_t sequence = GPOINTER_TO_UINT(gdk_event_get_event_sequence(touchEvent)); 1060 1086 1061 switch (touchEvent->type) { 1087 #if GTK_CHECK_VERSION(3, 10, 0) 1088 GdkEventType type = gdk_event_get_event_type(touchEvent); 1089 #else 1090 GdkEventType type = touchEvent->type 1091 #endif 1092 switch (type) { 1062 1093 case GDK_TOUCH_BEGIN: { 1063 1094 ASSERT(!priv->touchEvents.contains(sequence)); … … 1178 1209 void swipe(GdkEventTouch* event, const FloatPoint& velocity) final 1179 1210 { 1180 GUniquePtr<GdkEvent> scrollEvent = createScrollEvent(event, FloatPoint::narrowPrecision(event->x, event->y), velocity, true); 1211 double x, y; 1212 gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y); 1213 GUniquePtr<GdkEvent> scrollEvent = createScrollEvent(event, FloatPoint::narrowPrecision(x, y), velocity, true); 1181 1214 webkitWebViewBaseHandleWheelEvent(m_webView, scrollEvent.get(), WebWheelEvent::Phase::PhaseNone, WebWheelEvent::Phase::PhaseBegan); 1182 1215 } … … 1279 1312 { 1280 1313 #if HAVE(GTK_GESTURES) 1314 #if GTK_CHECK_VERSION(3, 10, 0) 1315 if (gdk_event_get_event_type(event) == GDK_TOUCHPAD_PINCH) 1316 #else 1281 1317 if (event->type == GDK_TOUCHPAD_PINCH) 1318 #endif // GTK_CHECK_VERSION(3, 10, 0) 1282 1319 webkitWebViewBaseGestureController(WEBKIT_WEB_VIEW_BASE(widget)).handleEvent(event); 1283 #endif 1320 #endif // HAVE(GTK_GESTURES) 1284 1321 1285 1322 return GDK_EVENT_PROPAGATE; -
trunk/Source/WebKit/UIProcess/gtk/GestureController.cpp
r246494 r246496 54 54 m_zoomGesture.handleEvent(event); 55 55 m_longpressGesture.handleEvent(event); 56 #if GTK_CHECK_VERSION(3, 10, 0) 57 touchEnd = (gdk_event_get_event_type(event) == GDK_TOUCH_END) || (gdk_event_get_event_type(event) == GDK_TOUCH_CANCEL); 58 #else 56 59 touchEnd = (event->type == GDK_TOUCH_END) || (event->type == GDK_TOUCH_CANCEL); 60 #endif 57 61 return touchEnd ? wasProcessingGestures : isProcessingGestures(); 58 62 } -
trunk/Source/WebKit/UIProcess/gtk/InputMethodFilter.cpp
r246494 r246496 199 199 bool justSentFakeKeyUp = m_justSentFakeKeyUp; 200 200 m_justSentFakeKeyUp = false; 201 if (justSentFakeKeyUp && event->type == GDK_KEY_RELEASE) 201 guint keyval; 202 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 203 #if GTK_CHECK_VERSION(3, 10, 0) 204 GdkEventType type = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)); 205 #else 206 GdkEventType type = event->type; 207 #endif 208 if (justSentFakeKeyUp && type == GDK_KEY_RELEASE) 202 209 return; 203 210 … … 211 218 } 212 219 213 if (filtered && event->type == GDK_KEY_PRESS) {220 if (filtered && type == GDK_KEY_PRESS) { 214 221 if (!m_preeditChanged && m_confirmedComposition.isNull()) { 215 222 m_composingTextCurrently = true; 216 m_lastFilteredKeyPressCodeWithNoResults = event->keyval;223 m_lastFilteredKeyPressCodeWithNoResults = keyval; 217 224 return; 218 225 } … … 228 235 // If we previously filtered a key press event and it yielded no results. Suppress 229 236 // the corresponding key release event to avoid confusing the web content. 230 if ( event->type == GDK_KEY_RELEASE && lastFilteredKeyPressCodeWithNoResults == event->keyval)237 if (type == GDK_KEY_RELEASE && lastFilteredKeyPressCodeWithNoResults == keyval) 231 238 return; 232 239 … … 444 451 void InputMethodFilter::logHandleKeyboardEventForTesting(GdkEventKey* event, const String& eventString, EventFakedForComposition faked) 445 452 { 453 guint keyval; 454 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 455 #if GTK_CHECK_VERSION(3, 10, 0) 456 const char* eventType = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)) == GDK_KEY_RELEASE ? "release" : "press"; 457 #else 446 458 const char* eventType = event->type == GDK_KEY_RELEASE ? "release" : "press"; 459 #endif 447 460 const char* fakedString = faked == EventFaked ? " (faked)" : ""; 448 461 if (!eventString.isNull()) 449 m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex( event->keyval), " text='", eventString, '\'', fakedString));462 m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(keyval), " text='", eventString, '\'', fakedString)); 450 463 else 451 m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex( event->keyval), fakedString));464 m_events.append(makeString("sendSimpleKeyEvent type=", eventType, " keycode=", hex(keyval), fakedString)); 452 465 } 453 466 454 467 void InputMethodFilter::logHandleKeyboardEventWithCompositionResultsForTesting(GdkEventKey* event, ResultsToSend resultsToSend, EventFakedForComposition faked) 455 468 { 469 guint keyval; 470 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 471 #if GTK_CHECK_VERSION(3, 10, 0) 472 const char* eventType = gdk_event_get_event_type(reinterpret_cast<GdkEvent*>(event)) == GDK_KEY_RELEASE ? "release" : "press"; 473 #else 456 474 const char* eventType = event->type == GDK_KEY_RELEASE ? "release" : "press"; 475 #endif 457 476 const char* fakedString = faked == EventFaked ? " (faked)" : ""; 458 m_events.append(makeString("sendKeyEventWithCompositionResults type=", eventType, " keycode=", hex( event->keyval), fakedString));477 m_events.append(makeString("sendKeyEventWithCompositionResults type=", eventType, " keycode=", hex(keyval), fakedString)); 459 478 460 479 if (resultsToSend & Composition && !m_confirmedComposition.isNull()) -
trunk/Source/WebKit/UIProcess/gtk/KeyBindingTranslator.cpp
r246494 r246496 206 206 ASSERT(m_pendingEditorCommands.isEmpty()); 207 207 208 guint keyval; 209 GdkModifierType state; 210 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 211 gdk_event_get_state(reinterpret_cast<GdkEvent*>(event), &state); 212 208 213 gtk_bindings_activate_event(G_OBJECT(m_nativeWidget.get()), event); 209 214 if (!m_pendingEditorCommands.isEmpty()) … … 211 216 212 217 // Special-case enter keys for we want them to work regardless of modifier. 213 if (( event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_KP_Enter || event->keyval == GDK_KEY_ISO_Enter))218 if ((keyval == GDK_KEY_Return || keyval == GDK_KEY_KP_Enter || keyval == GDK_KEY_ISO_Enter)) 214 219 return { "InsertNewLine" }; 215 220 216 221 // For keypress events, we want charCode(), but keyCode() does that. 217 unsigned mapKey = event->state << 16 | event->keyval;222 unsigned mapKey = state << 16 | keyval; 218 223 if (!mapKey) 219 224 return { }; -
trunk/Source/WebKit/UIProcess/gtk/ViewGestureControllerGtk.cpp
r246494 r246496 56 56 { 57 57 #if GTK_CHECK_VERSION(3, 20, 0) 58 return event->is_stop;58 return gdk_event_is_scroll_stop_event(reinterpret_cast<GdkEvent*>(event)); 59 59 #else 60 60 return !event->delta_x && !event->delta_y; … … 87 87 // FIXME: Should it maybe be allowed on mice/trackpoints as well? The GDK_SCROLL_SMOOTH 88 88 // requirement already filters out most mice, and it works pretty well on a trackpoint 89 return event->direction == GDK_SCROLL_SMOOTH&& (source == GDK_SOURCE_TOUCHPAD || source == GDK_SOURCE_TOUCHSCREEN);89 return gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), nullptr, nullptr) && (source == GDK_SOURCE_TOUCHPAD || source == GDK_SOURCE_TOUCHSCREEN); 90 90 } 91 91 … … 101 101 { 102 102 double multiplier = isTouchEvent(event) ? Scrollbar::pixelsPerLineStep() : gtkScrollDeltaMultiplier; 103 double xDelta, yDelta; 104 gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), &xDelta, &yDelta); 103 105 104 106 // GdkEventScroll deltas are inverted compared to NSEvent, so invert them again 105 return -FloatSize( event->delta_x, event->delta_y) * multiplier;107 return -FloatSize(xDelta, yDelta) * multiplier; 106 108 } 107 109 … … 184 186 } 185 187 186 double deltaX = -event->delta_x; 188 uint32_t eventTime = gdk_event_get_time(reinterpret_cast<GdkEvent*>(event)); 189 double eventDeltaX; 190 gdk_event_get_scroll_deltas(reinterpret_cast<GdkEvent*>(event), &eventDeltaX, nullptr); 191 192 double deltaX = -eventDeltaX; 187 193 if (isTouchEvent(event)) 188 194 deltaX *= (double) Scrollbar::pixelsPerLineStep() / m_webPageProxy.viewSize().width(); … … 190 196 deltaX *= gtkScrollDeltaMultiplier / swipeTouchpadBaseWidth; 191 197 192 Seconds time = Seconds::fromMilliseconds(event ->time);198 Seconds time = Seconds::fromMilliseconds(eventTime); 193 199 if (time != m_prevTime) 194 200 m_velocity = deltaX / (time - m_prevTime).milliseconds(); -
trunk/Source/WebKit/UIProcess/gtk/WebPopupMenuProxyGtk.cpp
r246494 r246496 96 96 gboolean WebPopupMenuProxyGtk::treeViewButtonReleaseEventCallback(GtkWidget* treeView, GdkEventButton* event, WebPopupMenuProxyGtk* popupMenu) 97 97 { 98 if (event->button != GDK_BUTTON_PRIMARY) 98 guint button; 99 gdk_event_get_button(reinterpret_cast<GdkEvent*>(event), &button); 100 if (button != GDK_BUTTON_PRIMARY) 99 101 return FALSE; 100 102 103 double x, y; 104 gdk_event_get_coords(reinterpret_cast<GdkEvent*>(event), &x, &y); 101 105 GUniqueOutPtr<GtkTreePath> path; 102 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeView), event->x, event->y, &path.outPtr(), nullptr, nullptr, nullptr))106 if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(treeView), x, y, &path.outPtr(), nullptr, nullptr, nullptr)) 103 107 return FALSE; 104 108 … … 120 124 return FALSE; 121 125 122 if (event->keyval == GDK_KEY_Escape) { 126 guint keyval; 127 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 128 if (keyval == GDK_KEY_Escape) { 123 129 popupMenu->hidePopupMenu(); 124 130 return TRUE; … … 371 377 Optional<unsigned> WebPopupMenuProxyGtk::typeAheadFindIndex(GdkEventKey* event) 372 378 { 373 gunichar keychar = gdk_keyval_to_unicode(event->keyval); 379 guint keyval; 380 gdk_event_get_keyval(reinterpret_cast<GdkEvent*>(event), &keyval); 381 gunichar keychar = gdk_keyval_to_unicode(keyval); 374 382 if (!g_unichar_isprint(keychar)) 375 383 return WTF::nullopt; 376 384 377 if (event->time < m_previousKeyEventTime) 385 uint32_t time = gdk_event_get_time(reinterpret_cast<GdkEvent*>(event)); 386 if (time < m_previousKeyEventTime) 378 387 return WTF::nullopt; 379 388 380 389 static const uint32_t typeaheadTimeoutMs = 1000; 381 if ( event->time - m_previousKeyEventTime > typeaheadTimeoutMs) {390 if (time - m_previousKeyEventTime > typeaheadTimeoutMs) { 382 391 if (m_currentSearchString) 383 392 g_string_truncate(m_currentSearchString, 0); 384 393 } 385 m_previousKeyEventTime = event->time;394 m_previousKeyEventTime = time; 386 395 387 396 if (!m_currentSearchString)
Note: See TracChangeset
for help on using the changeset viewer.