Skip to content

Commit 6aba54e

Browse files
authored
Merge pull request #38 from morozov/fullscreen
Unify fullscreen around AppKit native transition
2 parents 20988c4 + 3a389a5 commit 6aba54e

9 files changed

Lines changed: 111 additions & 186 deletions

File tree

fusepb/controllers/FuseController.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@
9595
- (IBAction)cart_eject:(id)sender;
9696
- (IBAction)cart_open:(id)sender;
9797
- (IBAction)export_screen:(id)sender;
98-
- (IBAction)fullscreen:(id)sender;
9998
- (IBAction)hard_reset:(id)sender;
10099
- (IBAction)ide_commit:(id)sender;
101100
- (IBAction)ide_eject:(id)sender;

fusepb/controllers/FuseController.m

Lines changed: 57 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -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

905902
save_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;

fusepb/models/Emulator.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@
112112
-(void) settingsSave;
113113
-(void) settingsResetDefaults;
114114

115-
-(void) fullscreen;
116-
117115
-(void) joystickToggleKeyboard;
118116
-(void) keyboardToggleRecreatedZXSpectrum;
119117
-(void) keyboardToggleArrowsShifted;

fusepb/models/Emulator.m

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -562,11 +562,6 @@ -(void) settingsResetDefaults
562562
settings_defaults( &settings_current );
563563
}
564564

565-
-(void) fullscreen
566-
{
567-
settings_current.full_screen = 1;
568-
}
569-
570565
-(void) joystickToggleKeyboard
571566
{
572567
settings_current.joy_keyboard = !settings_current.joy_keyboard;

fusepb/views/DisplayOpenGLView.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,6 @@
6464

6565
NSLock *view_lock;
6666

67-
NSWindow *fullscreenWindow;
68-
NSWindow *windowedWindow;
69-
7067
float target_ratio;
7168

7269
Emulator *real_emulator;
@@ -80,7 +77,6 @@
8077
}
8178
+(DisplayOpenGLView *) instance;
8279

83-
-(IBAction) fullscreen:(id)sender;
8480
-(IBAction) zoom:(id)sender;
8581

8682
-(void) createTexture:(Cocoa_Texture*)newScreen;
@@ -140,8 +136,6 @@
140136
-(void) settingsSave;
141137
-(void) settingsResetDefaults;
142138

143-
-(void) fullscreen;
144-
145139
-(void) joystickToggleKeyboard;
146140
-(void) keyboardToggleRecreatedZXSpectrum;
147141
-(void) keyboardToggleArrowsShifted;

0 commit comments

Comments
 (0)