macOS: handle changed flags
This enables catching pressed modifier keys with no other keys pressed
This commit is contained in:
parent
a13b3af3d1
commit
19b6a2f701
|
@ -149,6 +149,10 @@ unsafe fn create_view_class<H: WindowHandler>() -> &'static Class {
|
|||
sel!(keyUp:),
|
||||
key_up::<H> as extern "C" fn(&Object, Sel, id),
|
||||
);
|
||||
class.add_method(
|
||||
sel!(flagsChanged:),
|
||||
flags_changed::<H> as extern "C" fn(&Object, Sel, id),
|
||||
);
|
||||
|
||||
class.add_ivar::<*mut c_void>(WINDOW_STATE_IVAR_NAME);
|
||||
class.add_ivar::<*mut c_void>(FRAME_TIMER_IVAR_NAME);
|
||||
|
@ -392,3 +396,14 @@ extern "C" fn key_up<H: WindowHandler>(this: &Object, _: Sel, event: id){
|
|||
state.trigger_event(Event::Keyboard(key_event));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extern "C" fn flags_changed<H: WindowHandler>(this: &Object, _: Sel, event: id){
|
||||
let state: &mut WindowState<H> = unsafe {
|
||||
WindowState::from_field(this)
|
||||
};
|
||||
|
||||
if let Some(key_event) = state.process_native_key_event(event){
|
||||
state.trigger_event(Event::Keyboard(key_event));
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue