mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
cocoadisplay: Even better applicationShouldTerminate handling
It seems that performClose doesn't actually work properly for fullscreen windows
This commit is contained in:
parent
02a1e116f9
commit
72376e95f1
@ -33,12 +33,26 @@
|
|||||||
- (BOOL)applicationShouldTerminate:(NSApplication *)app {
|
- (BOOL)applicationShouldTerminate:(NSApplication *)app {
|
||||||
if (cocoadisplay_cat.is_debug()) {
|
if (cocoadisplay_cat.is_debug()) {
|
||||||
cocoadisplay_cat.debug()
|
cocoadisplay_cat.debug()
|
||||||
<< "Received applicationShouldTerminate, closing all Cocoa windows\n";
|
<< "Received applicationShouldTerminate, requesting to close all Cocoa windows\n";
|
||||||
}
|
}
|
||||||
// Call performClose on all the windows. This should make ShowBase shut down.
|
// Ask all the windows whether they are OK to be closed.
|
||||||
|
bool should_close = true;
|
||||||
for (NSWindow *window in [app windows]) {
|
for (NSWindow *window in [app windows]) {
|
||||||
[window performClose:nil];
|
if (![[window delegate] windowShouldClose:window]) {
|
||||||
|
should_close = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (should_close) {
|
||||||
|
if (cocoadisplay_cat.is_debug()) {
|
||||||
|
cocoadisplay_cat.debug()
|
||||||
|
<< "No window objected to close request, closing all windows\n";
|
||||||
|
}
|
||||||
|
// If so (none of them fired a close request event), close them now.
|
||||||
|
for (NSWindow *window in [app windows]) {
|
||||||
|
[window close];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Give the application a chance to run its own cleanup functions.
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user