diff --git a/hw/xquartz/NSUserDefaults+XQuartzDefaults.h b/hw/xquartz/NSUserDefaults+XQuartzDefaults.h index b8fc4a631..2f180b241 100644 --- a/hw/xquartz/NSUserDefaults+XQuartzDefaults.h +++ b/hw/xquartz/NSUserDefaults+XQuartzDefaults.h @@ -42,6 +42,8 @@ extern NSString * const XQuartzPrefKeySyncPrimaryOnSelect; @interface NSUserDefaults (XQuartzDefaults) ++ (NSUserDefaults *)globalDefaults; ++ (NSUserDefaults *)dockDefaults; + (NSUserDefaults *)xquartzDefaults; @end diff --git a/hw/xquartz/NSUserDefaults+XQuartzDefaults.m b/hw/xquartz/NSUserDefaults+XQuartzDefaults.m index b73003bae..bd5dd2305 100644 --- a/hw/xquartz/NSUserDefaults+XQuartzDefaults.m +++ b/hw/xquartz/NSUserDefaults+XQuartzDefaults.m @@ -44,6 +44,44 @@ NSString * const XQuartzPrefKeySyncPrimaryOnSelect = @"sync_primary_on_select"; @implementation NSUserDefaults (XQuartzDefaults) ++ (NSUserDefaults *)globalDefaults +{ + static dispatch_once_t once; + static NSUserDefaults *defaults; + + dispatch_once(&once, ^{ + NSString * const defaultsDomain = @".GlobalPreferences"; + defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain]; + + NSDictionary * const defaultDefaultsDict = @{ + @"AppleSpacesSwitchOnActivate" : @(YES), + }; + + [defaults registerDefaults:defaultDefaultsDict]; + }); + + return defaults; +} + ++ (NSUserDefaults *)dockDefaults +{ + static dispatch_once_t once; + static NSUserDefaults *defaults; + + dispatch_once(&once, ^{ + NSString * const defaultsDomain = @"com.apple.dock"; + defaults = [[[NSUserDefaults alloc] initWithSuiteName:defaultsDomain] retain]; + + NSDictionary * const defaultDefaultsDict = @{ + @"workspaces" : @(NO), + }; + + [defaults registerDefaults:defaultDefaultsDict]; + }); + + return defaults; +} + + (NSUserDefaults *)xquartzDefaults { static dispatch_once_t once; diff --git a/hw/xquartz/X11Application.m b/hw/xquartz/X11Application.m index 31df8c9d4..b0550b69a 100644 --- a/hw/xquartz/X11Application.m +++ b/hw/xquartz/X11Application.m @@ -417,7 +417,7 @@ QuartzModeBundleInit(void); case NSApplicationActivatedEventType: for_x = NO; if ([e window] == nil && x_was_active) { - BOOL order_all_windows = YES, workspaces, ok; + BOOL order_all_windows = YES; for_appkit = NO; #if APPKIT_APPFLAGS_HACK @@ -430,26 +430,9 @@ QuartzModeBundleInit(void); [self set_front_process:nil]; /* Get the Spaces preference for SwitchOnActivate */ - (void)CFPreferencesAppSynchronize(CFSTR("com.apple.dock")); - workspaces = - CFPreferencesGetAppBooleanValue(CFSTR("workspaces"), - CFSTR( - "com.apple.dock"), - &ok); - if (!ok) - workspaces = NO; - + BOOL const workspaces = [NSUserDefaults.dockDefaults boolForKey:@"workspaces"]; if (workspaces) { - (void)CFPreferencesAppSynchronize(CFSTR( - ".GlobalPreferences")); - order_all_windows = - CFPreferencesGetAppBooleanValue(CFSTR( - "AppleSpacesSwitchOnActivate"), - CFSTR( - ".GlobalPreferences"), - &ok); - if (!ok) - order_all_windows = YES; + order_all_windows = [NSUserDefaults.globalDefaults boolForKey:@"AppleSpacesSwitchOnActivate"]; } /* TODO: In the workspaces && !AppleSpacesSwitchOnActivate case, the windows are ordered @@ -460,8 +443,7 @@ QuartzModeBundleInit(void); * be restoring one of them. */ if ([e data2] & 0x10) { // 0x10 (bfCPSOrderAllWindowsForward) is set when we use cmd-tab or the dock icon - DarwinSendDDXEvent(kXquartzBringAllToFront, 1, - order_all_windows); + DarwinSendDDXEvent(kXquartzBringAllToFront, 1, order_all_windows); } } break;