Bug 248144

Summary: [GTK4] PlatformKeyboardEvent::currentStateOfModifierKeys is not implemented
Product: WebKit Reporter: Michael Catanzaro <mcatanzaro>
Component: WebKitGTKAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Normal CC: alicem, bugs-noreply, mcatanzaro
Priority: P2    
Version: WebKit Nightly Build   
Hardware: PC   
OS: Linux   
See Also: https://bugs.webkit.org/show_bug.cgi?id=248143
Bug Depends on:    
Bug Blocks: 210100    

Michael Catanzaro
Reported 2022-11-20 07:44:27 PST
PlatformKeyboardEvent::getCurrentModifierState (which is renamed to PlatformKeyboardEvent::currentStateOfModifierKeys in https://github.com/WebKit/WebKit/pull/6672) has hardcoded shift/ctrl/alt/meta all to 0. In GTK 3 the code did gtk_get_current_event_state(), but that's not possible in GTK 4. I also notice that PlatformKeyboardEvent::modifiersContainCapsLock hardcodes caps lock to 0. At least shift and caps lock both actually work when typing in this Bugzilla.
Attachments
Alice Mikhaylenko
Comment 1 2022-11-23 19:14:28 PST
The real question is why it does that instead of having modifiers as part of the event already. Like that code was never correct to begin with.
Michael Catanzaro
Comment 2 2023-01-30 07:23:33 PST
(In reply to Alexander Mikhaylenko from comment #1) > The real question is why it does that instead of having modifiers as part of > the event already. Like that code was never correct to begin with. The name of the function, PlatformKeyboardEvent::currentStateOfModifierKeys, is kinda unambiguous, though. It's asking for the *current* state of the modifier keys, not the state of modifier keys corresponding to any particular event. And it is a static function, not a method that operates on a particular event. Looks like it's used only by DragController.cpp and EventHandler.cpp (plus some platform-specific places that don't affect GTK). In DragController it's used to synthesize mouse events, which looks pretty reasonable. In EventHandler.cpp it's again used to synthesize mouse events in EventHandler::fakeMouseMoveEventTimerFired. So this code looks decent enough. Only problem is we need to implement it. I wonder if that's even possible with GTK 4.
Michael Catanzaro
Comment 3 2023-07-11 10:18:06 PDT
*** This bug has been marked as a duplicate of bug 258965 ***
Note You need to log in before you can comment on or make changes to this bug.