diff --git a/src/platform_impl/macos/view.rs b/src/platform_impl/macos/view.rs index 14131b071b..207f3bbd41 100644 --- a/src/platform_impl/macos/view.rs +++ b/src/platform_impl/macos/view.rs @@ -625,9 +625,10 @@ fn retrieve_keycode(event: id) -> Option { // Update `state.modifiers` if `event` has something different fn update_potentially_stale_modifiers(state: &mut ViewState, event: id) { - if state.modifiers != event_mods(event) { - state.modifiers = event_mods(event); - trace!("Modifiers are stale; updating modifiers"); + let event_modifiers = event_mods(event); + if state.modifiers != event_modifiers { + state.modifiers = event_modifiers; + AppState::queue_event(EventWrapper::StaticEvent(Event::WindowEvent { window_id: WindowId(get_window_id(state.ns_window)), event: WindowEvent::ModifiersChanged(state.modifiers), @@ -769,16 +770,17 @@ extern "C" fn flags_changed(this: &Object, _sel: Sel, event: id) { events.push_back(window_event); } + let window_id = WindowId(get_window_id(state.ns_window)); + for event in events { AppState::queue_event(EventWrapper::StaticEvent(Event::WindowEvent { - window_id: WindowId(get_window_id(state.ns_window)), + window_id, event, })); } AppState::queue_event(EventWrapper::StaticEvent(Event::WindowEvent { - // TODO Maybe memoize get_window_id if it's safe to reuse? - window_id: WindowId(get_window_id(state.ns_window)), + window_id, event: WindowEvent::ModifiersChanged(state.modifiers), })); }