mirror of
https://github.com/rust-windowing/winit.git
synced 2026-09-01 06:10:07 -04:00
On macOS, fix globe key triggering assertion
Sometimes FlagsChanged events don't carry any KeyCode information, thus we can't create a synthetic presses events for them. However in such cases, modifiers information is still accurate, thus propagate it. Fixes #2872.
This commit is contained in:
@@ -38,6 +38,7 @@ And please only add new entries to the top of this list, right below the `# Unre
|
|||||||
- Implement `AsFd`/`AsRawFd` for `EventLoop<T>` on X11 and Wayland.
|
- Implement `AsFd`/`AsRawFd` for `EventLoop<T>` on X11 and Wayland.
|
||||||
- **Breaking:** Bump `ndk` version to `0.8.0`, ndk-sys to `0.5.0`, `android-activity` to `0.5.0`.
|
- **Breaking:** Bump `ndk` version to `0.8.0`, ndk-sys to `0.5.0`, `android-activity` to `0.5.0`.
|
||||||
- Make `WindowBuilder` `Send + Sync`.
|
- Make `WindowBuilder` `Send + Sync`.
|
||||||
|
- On macOS, fix assertion when pressing `Globe` key.
|
||||||
|
|
||||||
# 0.29.1-beta
|
# 0.29.1-beta
|
||||||
|
|
||||||
|
|||||||
@@ -918,8 +918,13 @@ impl WinitView {
|
|||||||
|
|
||||||
// This function was called form the flagsChanged event, which is triggered
|
// This function was called form the flagsChanged event, which is triggered
|
||||||
// when the user presses/releases a modifier even if the same kind of modifier
|
// when the user presses/releases a modifier even if the same kind of modifier
|
||||||
// has already been pressed
|
// has already been pressed.
|
||||||
if is_flags_changed_event {
|
//
|
||||||
|
// When flags changed event has key code of zero it means that event doesn't carry any key
|
||||||
|
// event, thus we can't generate regular presses based on that. The `ModifiersChanged`
|
||||||
|
// later will work though, since the flags are attached to the event and contain valid
|
||||||
|
// information.
|
||||||
|
if is_flags_changed_event && ns_event.key_code() != 0 {
|
||||||
let scancode = ns_event.key_code();
|
let scancode = ns_event.key_code();
|
||||||
let keycode = KeyCode::from_scancode(scancode as u32);
|
let keycode = KeyCode::from_scancode(scancode as u32);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user