diff --git a/src/platform_impl/macos/view.rs b/src/platform_impl/macos/view.rs index 789398e37..b6cbcc6fd 100644 --- a/src/platform_impl/macos/view.rs +++ b/src/platform_impl/macos/view.rs @@ -762,6 +762,8 @@ extern "C" fn flags_changed(this: &Object, _sel: Sel, event: id) { })); } + trace!("Queueing event with modifiers {:?}", state.modifiers); + 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)), diff --git a/src/platform_impl/macos/window_delegate.rs b/src/platform_impl/macos/window_delegate.rs index 776689378..f5c03b47a 100644 --- a/src/platform_impl/macos/window_delegate.rs +++ b/src/platform_impl/macos/window_delegate.rs @@ -16,7 +16,7 @@ use objc::{ use crate::{ dpi::LogicalSize, - event::{Event, WindowEvent}, + event::{Event, ModifiersState, WindowEvent}, platform_impl::platform::{ app_state::AppState, event::{EventProxy, EventWrapper}, @@ -319,6 +319,7 @@ extern "C" fn window_did_become_key(this: &Object, _: Sel, _: id) { extern "C" fn window_did_resign_key(this: &Object, _: Sel, _: id) { trace!("Triggered `windowDidResignKey:`"); with_state(this, |state| { + state.emit_event(WindowEvent::ModifiersChanged(ModifiersState::empty())); state.emit_event(WindowEvent::Focused(false)); }); trace!("Completed `windowDidResignKey:`");