XQuartz: RandR: Don't change the rootless preference when changing RandR mode

Also renames a bunch of other variables for better consistency.

Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
This commit is contained in:
Jeremy Huddleston 2010-07-26 23:34:49 -07:00
parent 721edc69c3
commit 229323a19b
15 changed files with 124 additions and 115 deletions

View File

@ -75,9 +75,6 @@ void X11ApplicationLaunchClient (const char *cmd);
void X11ApplicationMain(int argc, char **argv, char **envp); void X11ApplicationMain(int argc, char **argv, char **envp);
extern int X11EnableKeyEquivalents;
extern int quartzHasRoot, quartzEnableRootless, quartzFullscreenMenu;
#define PREFS_APPSMENU "apps_menu" #define PREFS_APPSMENU "apps_menu"
#define PREFS_FAKEBUTTONS "enable_fake_buttons" #define PREFS_FAKEBUTTONS "enable_fake_buttons"
#define PREFS_SYSBEEP "enable_system_beep" #define PREFS_SYSBEEP "enable_system_beep"

View File

@ -38,6 +38,7 @@
#import "X11Application.h" #import "X11Application.h"
#include "darwin.h" #include "darwin.h"
#include "quartz.h"
#include "darwinEvents.h" #include "darwinEvents.h"
#include "quartzKeyboard.h" #include "quartzKeyboard.h"
#include "quartz.h" #include "quartz.h"
@ -63,9 +64,6 @@ extern int xpbproxy_run (void);
/* Stuck modifier / button state... force release when we context switch */ /* Stuck modifier / button state... force release when we context switch */
static NSEventType keyState[NUM_KEYCODES]; static NSEventType keyState[NUM_KEYCODES];
int X11EnableKeyEquivalents = TRUE, quartzFullscreenMenu = FALSE;
int quartzHasRoot = FALSE, quartzEnableRootless = TRUE;
extern Bool noTestExtensions; extern Bool noTestExtensions;
#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050 #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1050
@ -287,23 +285,23 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
do_swallow = YES; do_swallow = YES;
for_x = NO; for_x = NO;
#if XPLUGIN_VERSION >= 1 #if XPLUGIN_VERSION >= 1
} else if(X11EnableKeyEquivalents && } else if(XQuartzEnableKeyEquivalents &&
xp_is_symbolic_hotkey_event([e eventRef])) { xp_is_symbolic_hotkey_event([e eventRef])) {
swallow_keycode = [e keyCode]; swallow_keycode = [e keyCode];
do_swallow = YES; do_swallow = YES;
for_x = NO; for_x = NO;
#endif #endif
} else if(X11EnableKeyEquivalents && } else if(XQuartzEnableKeyEquivalents &&
[[self mainMenu] performKeyEquivalent:e]) { [[self mainMenu] performKeyEquivalent:e]) {
swallow_keycode = [e keyCode]; swallow_keycode = [e keyCode];
do_swallow = YES; do_swallow = YES;
for_appkit = NO; for_appkit = NO;
for_x = NO; for_x = NO;
} else if(!quartzEnableRootless } else if(!XQuartzIsRootless
&& ([e modifierFlags] & ALL_KEY_MASKS) == (NSCommandKeyMask | NSAlternateKeyMask) && ([e modifierFlags] & ALL_KEY_MASKS) == (NSCommandKeyMask | NSAlternateKeyMask)
&& ([e keyCode] == 0 /*a*/ || [e keyCode] == 53 /*Esc*/)) { && ([e keyCode] == 0 /*a*/ || [e keyCode] == 53 /*Esc*/)) {
/* We have this here to force processing fullscreen /* We have this here to force processing fullscreen
* toggle even if X11EnableKeyEquivalents is disabled */ * toggle even if XQuartzEnableKeyEquivalents is disabled */
swallow_keycode = [e keyCode]; swallow_keycode = [e keyCode];
do_swallow = YES; do_swallow = YES;
for_x = NO; for_x = NO;
@ -372,7 +370,7 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
break; break;
case 18: /* ApplicationDidReactivate */ case 18: /* ApplicationDidReactivate */
if (quartzHasRoot) for_appkit = NO; if (XQuartzHasRoot) for_appkit = NO;
break; break;
case NSApplicationDeactivatedEventType: case NSApplicationDeactivatedEventType:
@ -422,7 +420,7 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
if ([state boolValue]) if ([state boolValue])
SetSystemUIMode(kUIModeNormal, 0); SetSystemUIMode(kUIModeNormal, 0);
else else
SetSystemUIMode(kUIModeAllHidden, quartzFullscreenMenu ? kUIOptionAutoShowMenuBar : 0); // kUIModeAllSuppressed or kUIOptionAutoShowMenuBar can be used to allow "mouse-activation" SetSystemUIMode(kUIModeAllHidden, XQuartzFullscreenMenu ? kUIOptionAutoShowMenuBar : 0); // kUIModeAllSuppressed or kUIOptionAutoShowMenuBar can be used to allow "mouse-activation"
} }
- (void) launch_client:(NSString *)cmd { - (void) launch_client:(NSString *)cmd {
@ -720,18 +718,18 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
NSString *nsstr; NSString *nsstr;
const char *tem; const char *tem;
quartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP XQuartzUseSysBeep = [self prefs_get_boolean:@PREFS_SYSBEEP
default:quartzUseSysBeep]; default:XQuartzUseSysBeep];
quartzEnableRootless = [self prefs_get_boolean:@PREFS_ROOTLESS XQuartzRootlessDefault = [self prefs_get_boolean:@PREFS_ROOTLESS
default:quartzEnableRootless]; default:XQuartzRootlessDefault];
quartzFullscreenMenu = [self prefs_get_boolean:@PREFS_FULLSCREEN_MENU XQuartzFullscreenMenu = [self prefs_get_boolean:@PREFS_FULLSCREEN_MENU
default:quartzFullscreenMenu]; default:XQuartzFullscreenMenu];
quartzFullscreenDisableHotkeys = ![self prefs_get_boolean:@PREFS_FULLSCREEN_HOTKEYS XQuartzFullscreenDisableHotkeys = ![self prefs_get_boolean:@PREFS_FULLSCREEN_HOTKEYS
default:!quartzFullscreenDisableHotkeys]; default:!XQuartzFullscreenDisableHotkeys];
darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS darwinFakeButtons = [self prefs_get_boolean:@PREFS_FAKEBUTTONS
default:darwinFakeButtons]; default:darwinFakeButtons];
quartzOptionSendsAlt = [self prefs_get_boolean:@PREFS_OPTION_SENDS_ALT XQuartzOptionSendsAlt = [self prefs_get_boolean:@PREFS_OPTION_SENDS_ALT
default:quartzOptionSendsAlt]; default:XQuartzOptionSendsAlt];
if (darwinFakeButtons) { if (darwinFakeButtons) {
const char *fake2, *fake3; const char *fake2, *fake3;
@ -759,8 +757,8 @@ static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
} }
} }
X11EnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS XQuartzEnableKeyEquivalents = [self prefs_get_boolean:@PREFS_KEYEQUIVS
default:X11EnableKeyEquivalents]; default:XQuartzEnableKeyEquivalents];
darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP darwinSyncKeymap = [self prefs_get_boolean:@PREFS_SYNC_KEYMAP
default:darwinSyncKeymap]; default:darwinSyncKeymap];
@ -1158,7 +1156,7 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
pDev = darwinTabletCurrent; pDev = darwinTabletCurrent;
} }
if(!quartzServerVisible && noTestExtensions) { if(!XQuartzServerVisible && noTestExtensions) {
#if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION > 0 #if defined(XPLUGIN_VERSION) && XPLUGIN_VERSION > 0
/* Older libXplugin (Tiger/"Stock" Leopard) aren't thread safe, so we can't call xp_find_window from the Appkit thread */ /* Older libXplugin (Tiger/"Stock" Leopard) aren't thread safe, so we can't call xp_find_window from the Appkit thread */
xp_window_id wid = 0; xp_window_id wid = 0;
@ -1218,7 +1216,7 @@ static inline int ensure_flag(int flags, int device_independent, int device_depe
/* If we're in the background, we need to send a MotionNotify event /* If we're in the background, we need to send a MotionNotify event
* first, since we aren't getting them on background mouse motion * first, since we aren't getting them on background mouse motion
*/ */
if(!quartzServerVisible && noTestExtensions) { if(!XQuartzServerVisible && noTestExtensions) {
bgMouseLocationUpdated = FALSE; bgMouseLocationUpdated = FALSE;
DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, location.x, DarwinSendPointerEvents(darwinPointer, MotionNotify, 0, location.x,
location.y, pressure, tilt.x, tilt.y); location.y, pressure, tilt.x, tilt.y);

View File

@ -609,13 +609,13 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
} }
- (IBAction) enable_fullscreen_changed:sender { - (IBAction) enable_fullscreen_changed:sender {
int value = ![enable_fullscreen intValue]; XQuartzRootlessDefault = ![enable_fullscreen intValue];
[enable_fullscreen_menu setEnabled:!value]; [enable_fullscreen_menu setEnabled:!XQuartzRootlessDefault];
DarwinSendDDXEvent(kXquartzSetRootless, 1, value); DarwinSendDDXEvent(kXquartzSetRootless, 1, XQuartzRootlessDefault);
[NSApp prefs_set_boolean:@PREFS_ROOTLESS value:value]; [NSApp prefs_set_boolean:@PREFS_ROOTLESS value:XQuartzRootlessDefault];
[NSApp prefs_synchronize]; [NSApp prefs_synchronize];
} }
@ -638,24 +638,24 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
darwinFakeButtons = [fake_buttons intValue]; darwinFakeButtons = [fake_buttons intValue];
[NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons]; [NSApp prefs_set_boolean:@PREFS_FAKEBUTTONS value:darwinFakeButtons];
} else if(sender == use_sysbeep) { } else if(sender == use_sysbeep) {
quartzUseSysBeep = [use_sysbeep intValue]; XQuartzUseSysBeep = [use_sysbeep intValue];
[NSApp prefs_set_boolean:@PREFS_SYSBEEP value:quartzUseSysBeep]; [NSApp prefs_set_boolean:@PREFS_SYSBEEP value:XQuartzUseSysBeep];
} else if(sender == enable_keyequivs) { } else if(sender == enable_keyequivs) {
X11EnableKeyEquivalents = [enable_keyequivs intValue]; XQuartzEnableKeyEquivalents = [enable_keyequivs intValue];
[NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:X11EnableKeyEquivalents]; [NSApp prefs_set_boolean:@PREFS_KEYEQUIVS value:XQuartzEnableKeyEquivalents];
} else if(sender == sync_keymap) { } else if(sender == sync_keymap) {
darwinSyncKeymap = [sync_keymap intValue]; darwinSyncKeymap = [sync_keymap intValue];
[NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap]; [NSApp prefs_set_boolean:@PREFS_SYNC_KEYMAP value:darwinSyncKeymap];
} else if(sender == enable_fullscreen_menu) { } else if(sender == enable_fullscreen_menu) {
quartzFullscreenMenu = [enable_fullscreen_menu intValue]; XQuartzFullscreenMenu = [enable_fullscreen_menu intValue];
[NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value:quartzFullscreenMenu]; [NSApp prefs_set_boolean:@PREFS_FULLSCREEN_MENU value:XQuartzFullscreenMenu];
} else if(sender == option_sends_alt) { } else if(sender == option_sends_alt) {
BOOL prev_opt_sends_alt = quartzOptionSendsAlt; BOOL prev_opt_sends_alt = XQuartzOptionSendsAlt;
quartzOptionSendsAlt = [option_sends_alt intValue]; XQuartzOptionSendsAlt = [option_sends_alt intValue];
[NSApp prefs_set_boolean:@PREFS_OPTION_SENDS_ALT value:quartzOptionSendsAlt]; [NSApp prefs_set_boolean:@PREFS_OPTION_SENDS_ALT value:XQuartzOptionSendsAlt];
if(prev_opt_sends_alt != quartzOptionSendsAlt) if(prev_opt_sends_alt != XQuartzOptionSendsAlt)
QuartsResyncKeymap(TRUE); QuartsResyncKeymap(TRUE);
} else if(sender == click_through) { } else if(sender == click_through) {
[NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through intValue]]; [NSApp prefs_set_boolean:@PREFS_CLICK_THROUGH value:[click_through intValue]];
@ -701,10 +701,10 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
BOOL pbproxy_active = [NSApp prefs_get_boolean:@PREFS_SYNC_PB default:YES]; BOOL pbproxy_active = [NSApp prefs_get_boolean:@PREFS_SYNC_PB default:YES];
[fake_buttons setIntValue:darwinFakeButtons]; [fake_buttons setIntValue:darwinFakeButtons];
[use_sysbeep setIntValue:quartzUseSysBeep]; [use_sysbeep setIntValue:XQuartzUseSysBeep];
[enable_keyequivs setIntValue:X11EnableKeyEquivalents]; [enable_keyequivs setIntValue:XQuartzEnableKeyEquivalents];
[sync_keymap setIntValue:darwinSyncKeymap]; [sync_keymap setIntValue:darwinSyncKeymap];
[option_sends_alt setIntValue:quartzOptionSendsAlt]; [option_sends_alt setIntValue:XQuartzOptionSendsAlt];
[click_through setIntValue:[NSApp prefs_get_boolean:@PREFS_CLICK_THROUGH default:NO]]; [click_through setIntValue:[NSApp prefs_get_boolean:@PREFS_CLICK_THROUGH default:NO]];
[focus_follows_mouse setIntValue:[NSApp prefs_get_boolean:@PREFS_FFM default:NO]]; [focus_follows_mouse setIntValue:[NSApp prefs_get_boolean:@PREFS_FFM default:NO]];
[focus_on_new_window setIntValue:[NSApp prefs_get_boolean:@PREFS_FOCUS_ON_NEW_WINDOW default:YES]]; [focus_on_new_window setIntValue:[NSApp prefs_get_boolean:@PREFS_FOCUS_ON_NEW_WINDOW default:YES]];
@ -729,9 +729,9 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
[sync_text1 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; [sync_text1 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]];
[sync_text2 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]]; [sync_text2 setTextColor:pbproxy_active ? [NSColor controlTextColor] : [NSColor disabledControlTextColor]];
[enable_fullscreen setIntValue:!quartzEnableRootless]; [enable_fullscreen setIntValue:!XQuartzRootlessDefault];
[enable_fullscreen_menu setEnabled:!quartzEnableRootless]; [enable_fullscreen_menu setEnabled:!XQuartzRootlessDefault];
[enable_fullscreen_menu setIntValue:quartzFullscreenMenu]; [enable_fullscreen_menu setIntValue:XQuartzFullscreenMenu];
[prefs_panel makeKeyAndOrderFront:sender]; [prefs_panel makeKeyAndOrderFront:sender];
} }
@ -752,7 +752,7 @@ objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
NSMenu *menu = [item menu]; NSMenu *menu = [item menu];
if (item == toggle_fullscreen_item) if (item == toggle_fullscreen_item)
return !quartzEnableRootless; return !XQuartzIsRootless;
else if (menu == [X11App windowsMenu] || menu == dock_menu else if (menu == [X11App windowsMenu] || menu == dock_menu
|| (menu == [x11_about_item menu] && [item tag] == 42)) || (menu == [x11_about_item menu] && [item tag] == 42))
return (AppleWMSelectedEvents () & AppleWMControllerNotifyMask) != 0; return (AppleWMSelectedEvents () & AppleWMControllerNotifyMask) != 0;

View File

@ -239,9 +239,9 @@ static void DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr de
case kXquartzToggleFullscreen: case kXquartzToggleFullscreen:
DEBUG_LOG("kXquartzToggleFullscreen\n"); DEBUG_LOG("kXquartzToggleFullscreen\n");
if(quartzEnableRootless) if(XQuartzIsRootless)
ErrorF("Ignoring kXquartzToggleFullscreen because of rootless mode."); ErrorF("Ignoring kXquartzToggleFullscreen because of rootless mode.");
else if (quartzHasRoot) else if (XQuartzHasRoot)
QuartzHide(); QuartzHide();
else else
QuartzShow(); QuartzShow();
@ -250,7 +250,7 @@ static void DarwinEventHandler(int screenNum, InternalEvent *ie, DeviceIntPtr de
case kXquartzSetRootless: case kXquartzSetRootless:
DEBUG_LOG("kXquartzSetRootless\n"); DEBUG_LOG("kXquartzSetRootless\n");
QuartzSetRootless(e->data[0]); QuartzSetRootless(e->data[0]);
if (!quartzEnableRootless && !quartzHasRoot) if (!XQuartzIsRootless && !XQuartzHasRoot)
QuartzHide(); QuartzHide();
break; break;

View File

@ -66,15 +66,20 @@
#include <rootlessCommon.h> #include <rootlessCommon.h>
#include <Xplugin.h> #include <Xplugin.h>
// Shared global variables for Quartz modes
int quartzUseSysBeep = 0;
int quartzServerVisible = FALSE;
DevPrivateKeyRec quartzScreenKeyRec; DevPrivateKeyRec quartzScreenKeyRec;
int aquaMenuBarHeight = 0; int aquaMenuBarHeight = 0;
QuartzModeProcsPtr quartzProcs = NULL; QuartzModeProcsPtr quartzProcs = NULL;
const char *quartzOpenGLBundle = NULL; const char *quartzOpenGLBundle = NULL;
int quartzFullscreenDisableHotkeys = TRUE;
int quartzOptionSendsAlt = FALSE; Bool XQuartzFullscreenDisableHotkeys = TRUE;
Bool XQuartzOptionSendsAlt = FALSE;
Bool XQuartzEnableKeyEquivalents = TRUE;
Bool XQuartzHasRoot = FALSE;
Bool XQuartzRootlessDefault = TRUE;
Bool XQuartzIsRootless = TRUE;
Bool XQuartzServerVisible = FALSE;
Bool XQuartzFullscreenMenu = FALSE;
Bool XQuartzUseSysBeep = FALSE;
/* /*
=========================================================================== ===========================================================================
@ -245,61 +250,61 @@ void QuartzSetFullscreen(Bool state) {
DEBUG_LOG("QuartzSetFullscreen: state=%d\n", state); DEBUG_LOG("QuartzSetFullscreen: state=%d\n", state);
if(quartzHasRoot == state) if(XQuartzHasRoot == state)
return; return;
quartzHasRoot = state; XQuartzHasRoot = state;
xp_disable_update (); xp_disable_update ();
if (!quartzHasRoot && !quartzEnableRootless) if (!XQuartzHasRoot && !XQuartzIsRootless)
RootlessHideAllWindows(); RootlessHideAllWindows();
RootlessUpdateRooted(quartzHasRoot); RootlessUpdateRooted(XQuartzHasRoot);
if (quartzHasRoot && !quartzEnableRootless) if (XQuartzHasRoot && !XQuartzIsRootless)
RootlessShowAllWindows (); RootlessShowAllWindows ();
if (quartzHasRoot || quartzEnableRootless) { if (XQuartzHasRoot || XQuartzIsRootless) {
RootlessRepositionWindows(screenInfo.screens[0]); RootlessRepositionWindows(screenInfo.screens[0]);
} }
/* Somehow the menubar manages to interfere with our event stream /* Somehow the menubar manages to interfere with our event stream
* in fullscreen mode, even though it's not visible. * in fullscreen mode, even though it's not visible.
*/ */
X11ApplicationShowHideMenubar(!quartzHasRoot); X11ApplicationShowHideMenubar(!XQuartzHasRoot);
xp_reenable_update (); xp_reenable_update ();
if (quartzFullscreenDisableHotkeys) if (XQuartzFullscreenDisableHotkeys)
xp_disable_hot_keys(quartzHasRoot); xp_disable_hot_keys(XQuartzHasRoot);
} }
void QuartzSetRootless(Bool state) { void QuartzSetRootless(Bool state) {
if(quartzEnableRootless == state) if(XQuartzIsRootless == state)
return; return;
quartzEnableRootless = state; XQuartzIsRootless = state;
xp_disable_update(); xp_disable_update();
/* When in rootless, the menubar is not part of the screen, so we need to update our screens on toggle */ /* When in rootless, the menubar is not part of the screen, so we need to update our screens on toggle */
QuartzUpdateScreens(); QuartzUpdateScreens();
if(!quartzHasRoot) { if(!XQuartzHasRoot) {
if(!quartzEnableRootless) { if(!XQuartzIsRootless) {
RootlessHideAllWindows(); RootlessHideAllWindows();
} else { } else {
RootlessShowAllWindows(); RootlessShowAllWindows();
} }
} }
X11ApplicationShowHideMenubar(!quartzHasRoot); X11ApplicationShowHideMenubar(!XQuartzHasRoot);
xp_reenable_update(); xp_reenable_update();
if (!quartzEnableRootless && quartzFullscreenDisableHotkeys) if (!XQuartzIsRootless && XQuartzFullscreenDisableHotkeys)
xp_disable_hot_keys(quartzHasRoot); xp_disable_hot_keys(XQuartzHasRoot);
} }
/* /*
@ -311,17 +316,17 @@ void QuartzSetRootless(Bool state) {
void QuartzShow(void) { void QuartzShow(void) {
int i; int i;
if (quartzServerVisible) if (XQuartzServerVisible)
return; return;
quartzServerVisible = TRUE; XQuartzServerVisible = TRUE;
for (i = 0; i < screenInfo.numScreens; i++) { for (i = 0; i < screenInfo.numScreens; i++) {
if (screenInfo.screens[i]) { if (screenInfo.screens[i]) {
quartzProcs->ResumeScreen(screenInfo.screens[i]); quartzProcs->ResumeScreen(screenInfo.screens[i]);
} }
} }
if (!quartzEnableRootless) if (!XQuartzIsRootless)
QuartzSetFullscreen(TRUE); QuartzSetFullscreen(TRUE);
} }
@ -336,7 +341,7 @@ void QuartzHide(void)
{ {
int i; int i;
if (quartzServerVisible) { if (XQuartzServerVisible) {
for (i = 0; i < screenInfo.numScreens; i++) { for (i = 0; i < screenInfo.numScreens; i++) {
if (screenInfo.screens[i]) { if (screenInfo.screens[i]) {
quartzProcs->SuspendScreen(screenInfo.screens[i]); quartzProcs->SuspendScreen(screenInfo.screens[i]);
@ -345,7 +350,7 @@ void QuartzHide(void)
} }
QuartzSetFullscreen(FALSE); QuartzSetFullscreen(FALSE);
quartzServerVisible = FALSE; XQuartzServerVisible = FALSE;
} }
@ -358,7 +363,7 @@ void QuartzSetRootClip(
{ {
int i; int i;
if (!quartzServerVisible) if (!XQuartzServerVisible)
return; return;
for (i = 0; i < screenInfo.numScreens; i++) { for (i = 0; i < screenInfo.numScreens; i++) {

View File

@ -35,6 +35,7 @@
#include "screenint.h" #include "screenint.h"
#include "window.h" #include "window.h"
#include "pixmap.h"
/*------------------------------------------ /*------------------------------------------
Quartz display mode function types Quartz display mode function types
@ -113,7 +114,20 @@ typedef struct _QuartzModeProcs {
} QuartzModeProcsRec, *QuartzModeProcsPtr; } QuartzModeProcsRec, *QuartzModeProcsPtr;
extern QuartzModeProcsPtr quartzProcs; extern QuartzModeProcsPtr quartzProcs;
extern int quartzHasRoot, quartzEnableRootless;
extern Bool XQuartzHasRoot; /* TODO: These two booleans are very similar and */
extern Bool XQuartzServerVisible; /* the code that uses them needs to be refactored
* XQuartzHasRoot is essentially the "saved" XQuartzServerVisible
* value from when the server was not in rootless mode.
*/
extern Bool XQuartzEnableKeyEquivalents;
extern Bool XQuartzRootlessDefault; /* Is our default mode rootless? */
extern Bool XQuartzIsRootless; /* Is our current mode rootless (or FS)? */
extern Bool XQuartzFullscreenMenu; /* Show the menu bar (autohide) while in FS */
extern Bool XQuartzFullscreenDisableHotkeys;
extern Bool XQuartzOptionSendsAlt; /* Alt or Mode_switch? */
extern Bool XQuartzUseSysBeep; /* Sys beep or our own? */
Bool QuartzAddScreen(int index, ScreenPtr pScreen); Bool QuartzAddScreen(int index, ScreenPtr pScreen);
Bool QuartzSetupScreen(int index, ScreenPtr pScreen); Bool QuartzSetupScreen(int index, ScreenPtr pScreen);
@ -129,8 +143,8 @@ void QuartzHide(void);
void QuartzSetRootClip(BOOL enable); void QuartzSetRootClip(BOOL enable);
void QuartzSpaceChanged(uint32_t space_id); void QuartzSpaceChanged(uint32_t space_id);
void QuartzSetFullscreen(Bool state);
void QuartzSetRootless(Bool state); void QuartzSetRootless(Bool state);
void QuartzSetFullscreen(Bool state);
int server_main(int argc, char **argv, char **envp); int server_main(int argc, char **argv, char **envp);
#endif #endif

View File

@ -42,7 +42,7 @@
#include <dix-config.h> #include <dix-config.h>
#endif #endif
#include "quartzCommon.h" #include "quartz.h"
#include "quartzAudio.h" #include "quartzAudio.h"
#include <CoreAudio/CoreAudio.h> #include <CoreAudio/CoreAudio.h>
@ -220,7 +220,7 @@ void DDXRingBell(
int pitch, // pitch is Hz int pitch, // pitch is Hz
int duration ) // duration is milliseconds int duration ) // duration is milliseconds
{ {
if (quartzUseSysBeep) { if (XQuartzUseSysBeep) {
if (volume) if (volume)
NSBeep(); NSBeep();
return; return;

View File

@ -38,13 +38,7 @@
#include <X11/Xdefs.h> #include <X11/Xdefs.h>
#include "privates.h" #include "privates.h"
// User preferences used by Quartz modes
extern int quartzUseSysBeep;
extern int quartzFullscreenDisableHotkeys;
extern int quartzOptionSendsAlt;
// Other shared data // Other shared data
extern int quartzServerVisible;
extern DevPrivateKeyRec quartzScreenKeyRec; extern DevPrivateKeyRec quartzScreenKeyRec;
#define quartzScreenKey (&quartzScreenKeyRec) #define quartzScreenKey (&quartzScreenKeyRec)
extern int aquaMenuBarHeight; extern int aquaMenuBarHeight;

View File

@ -48,7 +48,7 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <AvailabilityMacros.h> #include <AvailabilityMacros.h>
#include "quartzCommon.h" #include "quartz.h"
#include "darwin.h" #include "darwin.h"
#include "darwinEvents.h" #include "darwinEvents.h"
@ -262,7 +262,7 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) {
case XK_Alt_L: case XK_Alt_L:
info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
info->modMap[MIN_KEYCODE + i] = Mod1Mask; info->modMap[MIN_KEYCODE + i] = Mod1Mask;
if(!quartzOptionSendsAlt) if(!XQuartzOptionSendsAlt)
*k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
break; break;
@ -272,7 +272,7 @@ static void DarwinBuildModifierMaps(darwinKeyboardInfo *info) {
#else #else
info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i; info->modifierKeycodes[NX_MODIFIERKEY_ALTERNATE][0] = i;
#endif #endif
if(!quartzOptionSendsAlt) if(!XQuartzOptionSendsAlt)
*k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor. *k = XK_Mode_switch; // Yes, this is ugly. This needs to be cleaned up when we integrate quartzKeyboard with this code and refactor.
info->modMap[MIN_KEYCODE + i] = Mod1Mask; info->modMap[MIN_KEYCODE + i] = Mod1Mask;
break; break;

View File

@ -140,7 +140,7 @@ static Bool QuartzRandREnumerateModes (ScreenPtr pScreen,
break; break;
} }
switch(callback(pScreen, screenId, &pQuartzScreen->fullScreenMode, data)) { switch(callback(pScreen, screenId, &pQuartzScreen->fullscreenMode, data)) {
case CALLBACK_SUCCESS: case CALLBACK_SUCCESS:
return TRUE; return TRUE;
case CALLBACK_ERROR: case CALLBACK_ERROR:
@ -239,7 +239,7 @@ static Bool QuartzRandREnumerateModes (ScreenPtr pScreen,
break; break;
} }
switch(callback(pScreen, screenId, &pQuartzScreen->fullScreenMode, data)) { switch(callback(pScreen, screenId, &pQuartzScreen->fullscreenMode, data)) {
case CALLBACK_SUCCESS: case CALLBACK_SUCCESS:
return TRUE; return TRUE;
case CALLBACK_ERROR: case CALLBACK_ERROR:
@ -377,7 +377,7 @@ static Bool QuartzRandRGetInfo (ScreenPtr pScreen, Rotation *rotations) {
resolution including/excluding the menu bar. */ resolution including/excluding the menu bar. */
QuartzRandRRegisterMode(pScreen, &pQuartzScreen->rootlessMode); QuartzRandRRegisterMode(pScreen, &pQuartzScreen->rootlessMode);
QuartzRandRRegisterMode(pScreen, &pQuartzScreen->fullScreenMode); QuartzRandRRegisterMode(pScreen, &pQuartzScreen->fullscreenMode);
return TRUE; return TRUE;
} }
@ -434,37 +434,37 @@ static Bool _QuartzRandRUpdateFakeModes (ScreenPtr pScreen) {
QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen); QuartzScreenPtr pQuartzScreen = QUARTZ_PRIV(pScreen);
if (pQuartzScreen->displayCount == 1) { if (pQuartzScreen->displayCount == 1) {
if(pQuartzScreen->fullScreenMode.ref) if(pQuartzScreen->fullscreenMode.ref)
CFRelease(pQuartzScreen->fullScreenMode.ref); CFRelease(pQuartzScreen->fullscreenMode.ref);
if(pQuartzScreen->currentMode.ref) if(pQuartzScreen->currentMode.ref)
CFRelease(pQuartzScreen->currentMode.ref); CFRelease(pQuartzScreen->currentMode.ref);
if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0], if (!QuartzRandRCopyCurrentModeInfo(pQuartzScreen->displayIDs[0],
&pQuartzScreen->fullScreenMode)) &pQuartzScreen->fullscreenMode))
return FALSE; return FALSE;
CFRetain(pQuartzScreen->fullScreenMode.ref); /* This extra retain is for currentMode's copy */ CFRetain(pQuartzScreen->fullscreenMode.ref); /* This extra retain is for currentMode's copy */
} else { } else {
pQuartzScreen->fullScreenMode.width = pScreen->width; pQuartzScreen->fullscreenMode.width = pScreen->width;
pQuartzScreen->fullScreenMode.height = pScreen->height; pQuartzScreen->fullscreenMode.height = pScreen->height;
if(quartzEnableRootless) if(XQuartzIsRootless)
pQuartzScreen->fullScreenMode.height += aquaMenuBarHeight; pQuartzScreen->fullscreenMode.height += aquaMenuBarHeight;
} }
pQuartzScreen->fullScreenMode.refresh = FAKE_REFRESH_FULLSCREEN; pQuartzScreen->fullscreenMode.refresh = FAKE_REFRESH_FULLSCREEN;
pQuartzScreen->rootlessMode = pQuartzScreen->fullScreenMode; pQuartzScreen->rootlessMode = pQuartzScreen->fullscreenMode;
pQuartzScreen->rootlessMode.refresh = FAKE_REFRESH_ROOTLESS; pQuartzScreen->rootlessMode.refresh = FAKE_REFRESH_ROOTLESS;
pQuartzScreen->rootlessMode.height -= aquaMenuBarHeight; pQuartzScreen->rootlessMode.height -= aquaMenuBarHeight;
if(quartzEnableRootless) { if(XQuartzIsRootless) {
pQuartzScreen->currentMode = pQuartzScreen->rootlessMode; pQuartzScreen->currentMode = pQuartzScreen->rootlessMode;
} else { } else {
pQuartzScreen->currentMode = pQuartzScreen->fullScreenMode; pQuartzScreen->currentMode = pQuartzScreen->fullscreenMode;
} }
DEBUG_LOG("rootlessMode: %d x %d\n", (int)pQuartzScreen->rootlessMode.width, (int)pQuartzScreen->rootlessMode.height); DEBUG_LOG("rootlessMode: %d x %d\n", (int)pQuartzScreen->rootlessMode.width, (int)pQuartzScreen->rootlessMode.height);
DEBUG_LOG("fullScreenMode: %d x %d\n", (int)pQuartzScreen->fullScreenMode.width, (int)pQuartzScreen->fullScreenMode.height); DEBUG_LOG("fullscreenMode: %d x %d\n", (int)pQuartzScreen->fullscreenMode.width, (int)pQuartzScreen->fullscreenMode.height);
DEBUG_LOG("currentMode: %d x %d\n", (int)pQuartzScreen->currentMode.width, (int)pQuartzScreen->currentMode.height); DEBUG_LOG("currentMode: %d x %d\n", (int)pQuartzScreen->currentMode.width, (int)pQuartzScreen->currentMode.height);
return TRUE; return TRUE;

View File

@ -45,7 +45,7 @@ typedef struct {
// No CG display will be covered by more than one X11 screen. // No CG display will be covered by more than one X11 screen.
int displayCount; int displayCount;
CGDirectDisplayID *displayIDs; CGDirectDisplayID *displayIDs;
QuartzModeInfo rootlessMode, fullScreenMode, currentMode; QuartzModeInfo rootlessMode, fullscreenMode, currentMode;
} QuartzScreenRec, *QuartzScreenPtr; } QuartzScreenRec, *QuartzScreenPtr;
#define QUARTZ_PRIV(pScreen) \ #define QUARTZ_PRIV(pScreen) \

View File

@ -67,7 +67,7 @@ static int xprSetWindowLevel(
if(!winRec) if(!winRec)
return BadWindow; return BadWindow;
if(quartzEnableRootless) if(XQuartzIsRootless)
wc.window_level = normal_window_levels[level]; wc.window_level = normal_window_levels[level];
else else
wc.window_level = rooted_window_levels[level]; wc.window_level = rooted_window_levels[level];

View File

@ -35,7 +35,7 @@
#include <dix-config.h> #include <dix-config.h>
#endif #endif
#include "quartzCommon.h" #include "quartz.h"
#include "xpr.h" #include "xpr.h"
#include "darwin.h" #include "darwin.h"
#include "darwinEvents.h" #include "darwinEvents.h"
@ -226,7 +226,7 @@ QuartzSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x,
{ {
QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen); QuartzCursorScreenPtr ScreenPriv = CURSOR_PRIV(pScreen);
if (!quartzServerVisible) if (!XQuartzServerVisible)
return; return;
if (pCursor == NULL) if (pCursor == NULL)
@ -295,7 +295,7 @@ QuartzCrossScreen(ScreenPtr pScreen, Bool entering)
static void static void
QuartzWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y) QuartzWarpCursor(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)
{ {
if (quartzServerVisible) if (XQuartzServerVisible)
{ {
int sx, sy; int sx, sy;

View File

@ -171,7 +171,7 @@ xprCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen,
pFrame->level = !IsRoot (pWin) ? AppleWMWindowLevelNormal : AppleWMNumWindowLevels; pFrame->level = !IsRoot (pWin) ? AppleWMWindowLevelNormal : AppleWMNumWindowLevels;
if(quartzEnableRootless) if(XQuartzIsRootless)
wc.window_level = normal_window_levels[pFrame->level]; wc.window_level = normal_window_levels[pFrame->level];
else else
wc.window_level = rooted_window_levels[pFrame->level]; wc.window_level = rooted_window_levels[pFrame->level];
@ -285,7 +285,7 @@ static void xprRestackFrame(RootlessFrameID wid, RootlessFrameID nextWid) {
RootlessWindowRec *winRec = x_hash_table_lookup(window_hash, wid, NULL); RootlessWindowRec *winRec = x_hash_table_lookup(window_hash, wid, NULL);
if(winRec) { if(winRec) {
if(quartzEnableRootless) if(XQuartzIsRootless)
wc.window_level = normal_window_levels[winRec->level]; wc.window_level = normal_window_levels[winRec->level];
else else
wc.window_level = rooted_window_levels[winRec->level]; wc.window_level = rooted_window_levels[winRec->level];

View File

@ -158,7 +158,7 @@ displayScreenBounds(CGDirectDisplayID id)
(int)frame.origin.x, (int)frame.origin.y); (int)frame.origin.x, (int)frame.origin.y);
/* Remove menubar to help standard X11 window managers. */ /* Remove menubar to help standard X11 window managers. */
if (quartzEnableRootless && if (XQuartzIsRootless &&
frame.origin.x == 0 && frame.origin.y == 0) { frame.origin.x == 0 && frame.origin.y == 0) {
frame.origin.y += aquaMenuBarHeight; frame.origin.y += aquaMenuBarHeight;
frame.size.height -= aquaMenuBarHeight; frame.size.height -= aquaMenuBarHeight;
@ -274,7 +274,8 @@ xprDisplayInit(void)
AppleDRIExtensionInit(); AppleDRIExtensionInit();
xprAppleWMInit(); xprAppleWMInit();
if (!quartzEnableRootless) XQuartzIsRootless = XQuartzRootlessDefault;
if (!XQuartzIsRootless)
RootlessHideAllWindows(); RootlessHideAllWindows();
} }