1
0
Fork 0

Merge pull request #67 from greatest-ape/macos-flags-changed

macOS: handle changed flags
This commit is contained in:
william light 2020-12-05 02:01:23 +01:00 committed by GitHub
commit db1725a33b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -149,6 +149,10 @@ unsafe fn create_view_class<H: WindowHandler>() -> &'static Class {
sel!(keyUp:), sel!(keyUp:),
key_up::<H> as extern "C" fn(&Object, Sel, id), 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>(WINDOW_STATE_IVAR_NAME);
class.add_ivar::<*mut c_void>(FRAME_TIMER_IVAR_NAME); class.add_ivar::<*mut c_void>(FRAME_TIMER_IVAR_NAME);
@ -388,6 +392,17 @@ extern "C" fn key_up<H: WindowHandler>(this: &Object, _: Sel, event: id){
WindowState::from_field(this) WindowState::from_field(this)
}; };
if let Some(key_event) = state.process_native_key_event(event){
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){ if let Some(key_event) = state.process_native_key_event(event){
state.trigger_event(Event::Keyboard(key_event)); state.trigger_event(Event::Keyboard(key_event));
} }