@@ -682,21 +682,19 @@ - (IBAction)open:(id)sender
682682{
683683 char *filename = NULL ;
684684
685- if ( !settings_current.full_screen ) {
686- [[DisplayOpenGLView instance ] pause ];
687-
688- filename = cocoaui_openpanel_get_filename ( @" Open Spectrum File" , allFileTypes );
685+ [[DisplayOpenGLView instance ] pause ];
689686
690- if ( !filename ) { [[DisplayOpenGLView instance ] unpause ]; return ; }
687+ filename = cocoaui_openpanel_get_filename ( @" Open Spectrum File" , allFileTypes );
688+
689+ if ( !filename ) { [[DisplayOpenGLView instance ] unpause ]; return ; }
691690
692- [self addRecentSnapshot: filename];
691+ [self addRecentSnapshot: filename];
693692
694- [self openFile: filename];
693+ [self openFile: filename];
695694
696- free (filename);
695+ free (filename);
697696
698- [[DisplayOpenGLView instance ] unpause ];
699- }
697+ [[DisplayOpenGLView instance ] unpause ];
700698}
701699
702700- (IBAction )reset : (id )sender
@@ -889,22 +887,20 @@ - (IBAction)save_as:(id)sender
889887{
890888 char *filename = NULL ;
891889
892- if ( !settings_current.full_screen ) {
893- [[DisplayOpenGLView instance ] pause ];
890+ [[DisplayOpenGLView instance ] pause ];
894891
895- filename = cocoaui_savepanel_get_filename ( @" Save Snapshot As" , @[@" szx" , @" z80" , @" sna" ] );
892+ filename = cocoaui_savepanel_get_filename ( @" Save Snapshot As" , @[@" szx" , @" z80" , @" sna" ] );
896893
897- if ( !filename ) goto save_as_exit;
894+ if ( !filename ) goto save_as_exit;
898895
899- [[DisplayOpenGLView instance ] snapshotWrite: filename];
896+ [[DisplayOpenGLView instance ] snapshotWrite: filename];
900897
901- [self addRecentSnapshot: filename];
898+ [self addRecentSnapshot: filename];
902899
903- free ( filename );
900+ free ( filename );
904901
905902save_as_exit:
906- [[DisplayOpenGLView instance ] unpause ];
907- }
903+ [[DisplayOpenGLView instance ] unpause ];
908904}
909905
910906- (IBAction )open_screen : (id )sender
@@ -1015,11 +1011,6 @@ - (IBAction)save_options:(id)sender
10151011 [[DisplayOpenGLView instance ] settingsSave ];
10161012}
10171013
1018- - (IBAction )fullscreen : (id )sender
1019- {
1020- [[DisplayOpenGLView instance ] fullscreen ];
1021- }
1022-
10231014- (IBAction )hard_reset : (id )sender
10241015{
10251016 [[DisplayOpenGLView instance ] pause ];
@@ -1159,9 +1150,7 @@ - (IBAction)multiface_red_button:(id)sender
11591150
11601151- (IBAction )quit : (id )sender
11611152{
1162- if ( !settings_current.full_screen ) {
1163- [[NSApp keyWindow ] performClose: self ];
1164- }
1153+ [NSApp terminate: self ];
11651154}
11661155
11671156- (IBAction )hide : (id )sender
@@ -1171,9 +1160,7 @@ - (IBAction)hide:(id)sender
11711160
11721161- (IBAction )help : (id )sender
11731162{
1174- if ( !settings_current.full_screen ) {
1175- [NSApp showHelp: self ];
1176- }
1163+ [NSApp showHelp: self ];
11771164}
11781165
11791166- (IBAction )cocoa_break : (id )sender
@@ -1210,95 +1197,75 @@ - (IBAction)cocoa_break:(id)sender
12101197
12111198- (IBAction )showRollbackPane : (id )sender
12121199{
1213- if ( !settings_current.full_screen ) {
1214- if ( !rollbackController ) {
1215- rollbackController = [[RollbackController alloc ] init ];
1216- }
1217- [rollbackController showWindow: self ];
1200+ if ( !rollbackController ) {
1201+ rollbackController = [[RollbackController alloc ] init ];
12181202 }
1203+ [rollbackController showWindow: self ];
12191204}
12201205
12211206- (IBAction )showTapeBrowserPane : (id )sender
12221207{
1223- if ( !settings_current.full_screen ) {
1224- if ( !tapeBrowserController ) {
1225- tapeBrowserController = [[TapeBrowserController alloc ] init ];
1226- }
1227- [tapeBrowserController showWindow: self ];
1208+ if ( !tapeBrowserController ) {
1209+ tapeBrowserController = [[TapeBrowserController alloc ] init ];
12281210 }
1211+ [tapeBrowserController showWindow: self ];
12291212}
12301213
12311214- (IBAction )showKeyboardPane : (id )sender
12321215{
1233- if ( !settings_current.full_screen ) {
1234- if ( !settings_current.full_screen ) {
1235- if ( !keyboardController ) {
1236- keyboardController = [[KeyboardController alloc ] init ];
1237- }
1238- [keyboardController showCloseWindow: self ];
1239- }
1216+ if ( !keyboardController ) {
1217+ keyboardController = [[KeyboardController alloc ] init ];
12401218 }
1219+ [keyboardController showCloseWindow: self ];
12411220}
12421221
12431222- (IBAction )showLoadBinaryPane : (id )sender
12441223{
1245- if ( !settings_current.full_screen ) {
1246- if ( !loadBinaryController ) {
1247- loadBinaryController = [[LoadBinaryController alloc ] init ];
1248- }
1249-
1250- [loadBinaryController showWindow: self ];
1224+ if ( !loadBinaryController ) {
1225+ loadBinaryController = [[LoadBinaryController alloc ] init ];
12511226 }
1227+
1228+ [loadBinaryController showWindow: self ];
12521229}
12531230
12541231- (IBAction )showSaveBinaryPane : (id )sender
12551232{
1256- if ( !settings_current.full_screen ) {
1257- if ( !saveBinaryController ) {
1258- saveBinaryController = [[SaveBinaryController alloc ] init ];
1259- }
1260- [saveBinaryController showWindow: self ];
1233+ if ( !saveBinaryController ) {
1234+ saveBinaryController = [[SaveBinaryController alloc ] init ];
12611235 }
1236+ [saveBinaryController showWindow: self ];
12621237}
12631238
12641239- (IBAction )showPokeFinderPane : (id )sender
12651240{
1266- if ( !settings_current.full_screen ) {
1267- if ( !pokeFinderController ) {
1268- pokeFinderController = [[PokeFinderController alloc ] init ];
1269- }
1270- [pokeFinderController showWindow: self ];
1241+ if ( !pokeFinderController ) {
1242+ pokeFinderController = [[PokeFinderController alloc ] init ];
12711243 }
1244+ [pokeFinderController showWindow: self ];
12721245}
12731246
12741247- (IBAction )showPokeMemoryPane : (id )sender
12751248{
1276- if ( !settings_current.full_screen ) {
1277- if ( !pokeMemoryController ) {
1278- pokeMemoryController = [[PokeMemoryController alloc ] init ];
1279- }
1280- [pokeMemoryController showWindow: self ];
1249+ if ( !pokeMemoryController ) {
1250+ pokeMemoryController = [[PokeMemoryController alloc ] init ];
12811251 }
1252+ [pokeMemoryController showWindow: self ];
12821253}
12831254
12841255- (IBAction )showMemoryBrowserPane : (id )sender
12851256{
1286- if ( !settings_current.full_screen ) {
1287- if ( !memoryBrowserController ) {
1288- memoryBrowserController = [[MemoryBrowserController alloc ] init ];
1289- }
1257+ if ( !memoryBrowserController ) {
1258+ memoryBrowserController = [[MemoryBrowserController alloc ] init ];
12901259 }
12911260 [memoryBrowserController showWindow: self ];
12921261}
12931262
12941263- (IBAction )showPreferencesPane : (id )sender ;
12951264{
1296- if ( !settings_current.full_screen ) {
1297- if ( !preferencesController ) {
1298- preferencesController = [[PreferencesController alloc ] init ];
1299- }
1300- [preferencesController showWindow: self ];
1265+ if ( !preferencesController ) {
1266+ preferencesController = [[PreferencesController alloc ] init ];
13011267 }
1268+ [preferencesController showWindow: self ];
13021269}
13031270
13041271- (IBAction )saveFileTypeClicked : (id )sender ;
@@ -2646,6 +2613,19 @@ -(ui_confirm_joystick_t) confirmJoystick:(libspectrum_joystick)type inputs:(int)
26462613 return confirm;
26472614}
26482615
2616+ - (NSApplicationTerminateReply )applicationShouldTerminate : (NSApplication *)sender
2617+ {
2618+ /* The user-facing prompts live here, not in -windowShouldClose:, so Cmd+Q
2619+ (-quit: → [NSApp terminate:]) and red-button / Cmd+W (windowShouldClose:
2620+ → [NSApp terminate:]) share one path. AppKit calls close (not
2621+ performClose:) on each window during termination, so windowShouldClose:
2622+ would be bypassed on the Cmd+Q path otherwise. */
2623+ if ( !cocoaui_confirm ( " Exit Fuse?" ) ) return NSTerminateCancel;
2624+ if ( [[DisplayOpenGLView instance ] checkMediaChanged ] ) return NSTerminateCancel;
2625+ [[DisplayOpenGLView instance ] displayLinkStop ];
2626+ return NSTerminateNow;
2627+ }
2628+
26492629- (BOOL )applicationShouldTerminateAfterLastWindowClosed : (NSApplication *)theApplication
26502630{
26512631 return YES ;
0 commit comments