mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-24 06:11:30 +11:00
macOS: Emit LoopDestroyed on CMD+Q (#2073)
override applicationWillTerminate: Co-authored-by: Mads Marquart <mads@marquart.dk>
This commit is contained in:
parent
2c01e9e747
commit
c5eaa0ab69
|
@ -8,6 +8,7 @@ And please only add new entries to the top of this list, right below the `# Unre
|
||||||
|
|
||||||
# Unreleased
|
# Unreleased
|
||||||
|
|
||||||
|
- On macOS, Fix emitting `Event::LoopDestroyed` on CMD+Q.
|
||||||
- On macOS, fixed an issue where having multiple windows would prevent run_return from ever returning.
|
- On macOS, fixed an issue where having multiple windows would prevent run_return from ever returning.
|
||||||
- On Wayland, fix bug where the cursor wouldn't hide in GNOME.
|
- On Wayland, fix bug where the cursor wouldn't hide in GNOME.
|
||||||
- On macOS, Windows, and Wayland, add `set_cursor_hittest` to let the window ignore mouse events.
|
- On macOS, Windows, and Wayland, add `set_cursor_hittest` to let the window ignore mouse events.
|
||||||
|
|
|
@ -34,6 +34,11 @@ pub static APP_DELEGATE_CLASS: Lazy<AppDelegateClass> = Lazy::new(|| unsafe {
|
||||||
sel!(applicationDidFinishLaunching:),
|
sel!(applicationDidFinishLaunching:),
|
||||||
did_finish_launching as extern "C" fn(&Object, Sel, id),
|
did_finish_launching as extern "C" fn(&Object, Sel, id),
|
||||||
);
|
);
|
||||||
|
decl.add_method(
|
||||||
|
sel!(applicationWillTerminate:),
|
||||||
|
will_terminate as extern "C" fn(&Object, Sel, id),
|
||||||
|
);
|
||||||
|
|
||||||
decl.add_ivar::<*mut c_void>(AUX_DELEGATE_STATE_NAME);
|
decl.add_ivar::<*mut c_void>(AUX_DELEGATE_STATE_NAME);
|
||||||
|
|
||||||
AppDelegateClass(decl.register())
|
AppDelegateClass(decl.register())
|
||||||
|
@ -75,3 +80,10 @@ extern "C" fn did_finish_launching(this: &Object, _: Sel, _: id) {
|
||||||
trace_scope!("applicationDidFinishLaunching:");
|
trace_scope!("applicationDidFinishLaunching:");
|
||||||
AppState::launched(this);
|
AppState::launched(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" fn will_terminate(_this: &Object, _: Sel, _: id) {
|
||||||
|
trace!("Triggered `applicationWillTerminate`");
|
||||||
|
// TODO: Notify every window that it will be destroyed, like done in iOS?
|
||||||
|
AppState::exit();
|
||||||
|
trace!("Completed `applicationWillTerminate`");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue