mirror of
https://git.sr.ht/~eliasnaur/gio
synced 2026-07-01 15:45:38 +00:00
app/internal/window: [macOS] only terminate app when last window closes
Updates #19 Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
@@ -39,6 +39,7 @@ __attribute__ ((visibility ("hidden"))) CFTypeRef gio_readClipboard(void);
|
||||
__attribute__ ((visibility ("hidden"))) void gio_writeClipboard(unichar *chars, NSUInteger length);
|
||||
__attribute__ ((visibility ("hidden"))) void gio_setNeedsDisplay(CFTypeRef viewRef);
|
||||
__attribute__ ((visibility ("hidden"))) void gio_makeKeyAndOrderFront(CFTypeRef viewRef);
|
||||
__attribute__ ((visibility ("hidden"))) void gio_appTerminate(void);
|
||||
*/
|
||||
import "C"
|
||||
|
||||
@@ -239,12 +240,15 @@ func configFor(scale float32) config {
|
||||
}
|
||||
}
|
||||
|
||||
//export gio_onTerminate
|
||||
func gio_onTerminate(view C.CFTypeRef) {
|
||||
//export gio_onClose
|
||||
func gio_onClose(view C.CFTypeRef) {
|
||||
w := mustView(view)
|
||||
w.displayLink.Close()
|
||||
deleteView(view)
|
||||
w.w.Event(system.DestroyEvent{})
|
||||
if len(viewMap) == 0 {
|
||||
C.gio_appTerminate()
|
||||
}
|
||||
}
|
||||
|
||||
//export gio_onHide
|
||||
|
||||
@@ -50,8 +50,7 @@
|
||||
- (void)windowWillClose:(NSNotification *)notification {
|
||||
NSWindow *window = (NSWindow *)[notification object];
|
||||
window.delegate = nil;
|
||||
gio_onTerminate((__bridge CFTypeRef)window.contentView);
|
||||
[NSApp terminate:nil];
|
||||
gio_onClose((__bridge CFTypeRef)window.contentView);
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -151,6 +150,12 @@ void gio_makeKeyAndOrderFront(CFTypeRef viewRef) {
|
||||
[view.window makeKeyAndOrderFront:nil];
|
||||
}
|
||||
|
||||
void gio_appTerminate(void) {
|
||||
@autoreleasepool {
|
||||
[NSApp terminate:nil];
|
||||
}
|
||||
}
|
||||
|
||||
void gio_main(CFTypeRef viewRef, const char *title, CGFloat width, CGFloat height) {
|
||||
@autoreleasepool {
|
||||
[NSApplication sharedApplication];
|
||||
|
||||
Reference in New Issue
Block a user