diff --git a/CHANGELOG.md b/CHANGELOG.md index 247c4336b1..57e3e6d000 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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` on X11 and Wayland. - **Breaking:** Bump `ndk` version to `0.8.0`, ndk-sys to `0.5.0`, `android-activity` to `0.5.0`. - Make `WindowBuilder` `Send + Sync`. +- On macOS, fix assertion when pressing `Globe` key. # 0.29.1-beta diff --git a/src/platform_impl/macos/view.rs b/src/platform_impl/macos/view.rs index 39ac40a5b0..414ea1ba89 100644 --- a/src/platform_impl/macos/view.rs +++ b/src/platform_impl/macos/view.rs @@ -918,8 +918,13 @@ impl WinitView { // 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 - // has already been pressed - if is_flags_changed_event { + // has already been pressed. + // + // 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 keycode = KeyCode::from_scancode(scancode as u32);