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:
Elias Naur
2020-06-03 21:13:51 +02:00
parent 9efdc3409c
commit 476bf8d263
2 changed files with 13 additions and 4 deletions
+6 -2
View File
@@ -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
+7 -2
View File
@@ -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];