xserver: Branch 'xorg-server-1.4-apple'
Jeremy Huddleston
jeremyhu at kemper.freedesktop.org
Sat Nov 24 03:53:49 PST 2007
hw/darwin/quartz/X11Application.m | 989 +++++++++++++++-----------------------
1 file changed, 410 insertions(+), 579 deletions(-)
New commits:
commit 78b053b8599f54d8abf5aaa2f4b3ff48e0bfb9bb
Author: Jeremy Huddleston <jeremy at yuffie.local>
Date: Sat Nov 24 03:34:48 2007 -0800
Darwin: Formatting cleanup
diff --git a/hw/darwin/quartz/X11Application.m b/hw/darwin/quartz/X11Application.m
index ae6f4bc..60d11c5 100644
--- a/hw/darwin/quartz/X11Application.m
+++ b/hw/darwin/quartz/X11Application.m
@@ -1,6 +1,6 @@
/* X11Application.m -- subclass of NSApplication to multiplex events
- Copyright (c) 2002-2007 Apple Inc. All rights reserved.
+ Copyright (c) 2002-2007 Apple Inc.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files
@@ -27,19 +27,17 @@
promote the sale, use or other dealings in this Software without
prior written authorization. */
-#include "../quartz/quartzCommon.h"
+#include "quartzCommon.h"
#import "X11Application.h"
#include <Carbon/Carbon.h>
/* ouch! */
#define BOOL X_BOOL
-//# include "Xproto.h"
# include "darwin.h"
-# include "../quartz/quartz.h"
+# include "quartz.h"
# define _APPLEWM_SERVER_
# include "X11/extensions/applewm.h"
-//# include "X.h"
# include "micmap.h"
#undef BOOL
@@ -56,13 +54,15 @@ WindowPtr xprGetXWindowFromAppKit(int windowNumber); // xpr/xprFrame.c
int X11EnableKeyEquivalents = TRUE;
int quartzHasRoot = FALSE, quartzEnableRootless = TRUE;
-extern int darwinFakeButtons;
-extern Bool enable_stereo;
+extern int darwinFakeButtons, input_check_flag;
+// extern Bool enable_stereo;
+Bool enable_stereo; //<-- this needs to go back to being an extern once glxCGL is fixed
+
+extern xEvent *darwinEvents;
X11Application *X11App;
-#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask \
-| NSAlternateKeyMask | NSCommandKeyMask)
+#define ALL_KEY_MASKS (NSShiftKeyMask | NSControlKeyMask | NSAlternateKeyMask | NSCommandKeyMask)
@implementation X11Application
@@ -81,27 +81,21 @@ static void send_nsevent (NSEventType type, NSEvent *e);
but is statically linked into this X server. */
extern Bool QuartzModeBundleInit(void);
-static void
-init_ports (void)
-{
+static void init_ports (void) {
kern_return_t r;
NSPort *p;
- if (_port != MACH_PORT_NULL)
- return;
+ if (_port != MACH_PORT_NULL) return;
r = mach_port_allocate (mach_task_self (), MACH_PORT_RIGHT_RECEIVE, &_port);
- if (r != KERN_SUCCESS)
- return;
+ if (r != KERN_SUCCESS) return;
p = [NSMachPort portWithMachPort:_port];
[p setDelegate:NSApp];
[p scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
}
-static void
-message_kit_thread (SEL selector, NSObject *arg)
-{
+static void message_kit_thread (SEL selector, NSObject *arg) {
message msg;
kern_return_t r;
@@ -116,29 +110,24 @@ message_kit_thread (SEL selector, NSObject *arg)
msg.arg = [arg retain];
r = mach_msg (&msg.hdr, MACH_SEND_MSG, msg.hdr.msgh_size,
- 0, MACH_PORT_NULL, 0, MACH_PORT_NULL);
+ 0, MACH_PORT_NULL, 0, MACH_PORT_NULL);
if (r != KERN_SUCCESS)
- fprintf (stderr, "%s: mach_msg failed: %x\n", __FUNCTION__, r);
+ ErrorF("%s: mach_msg failed: %x\n", __FUNCTION__, r);
}
-- (void) handleMachMessage:(void *)_msg
-{
+- (void) handleMachMessage:(void *)_msg {
message *msg = _msg;
[self performSelector:msg->selector withObject:msg->arg];
[msg->arg release];
}
-- (void) set_controller:obj
-{
- if (_controller == nil)
- _controller = [obj retain];
+- (void) set_controller:obj {
+ if (_controller == nil) _controller = [obj retain];
}
-- (void) dealloc
-{
- if (_controller != nil)
- [_controller release];
+- (void) dealloc {
+ if (_controller != nil) [_controller release];
if (_port != MACH_PORT_NULL)
mach_port_deallocate (mach_task_self (), _port);
@@ -146,8 +135,7 @@ message_kit_thread (SEL selector, NSObject *arg)
[super dealloc];
}
-- (void) orderFrontStandardAboutPanel: (id) sender
-{
+- (void) orderFrontStandardAboutPanel: (id) sender {
NSMutableDictionary *dict;
NSDictionary *infoDict;
NSString *tem;
@@ -160,57 +148,45 @@ message_kit_thread (SEL selector, NSObject *arg)
tem = [infoDict objectForKey:@"CFBundleShortVersionString"];
- [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.2",
- tem] forKey:@"ApplicationVersion"];
+ [dict setObject:[NSString stringWithFormat:@"X11.app %@ - X.org X11R7.3", tem]
+ forKey:@"ApplicationVersion"];
[self orderFrontStandardAboutPanelWithOptions: dict];
}
-- (void) activateX:(BOOL)state
-{
+- (void) activateX:(BOOL)state {
/* Create a TSM document that supports full Unicode input, and
have it activated while X is active (unless using the old
keymapping files) */
static TSMDocumentID x11_document;
- if (state)
- {
- QuartzMessageServerThread (kXDarwinActivate, 0);
-
- if (!_x_active)
- {
- if (x11_document == 0 && darwinKeymapFile == NULL)
- {
- OSType types[1];
- types[0] = kUnicodeDocument;
- NewTSMDocument (1, types, &x11_document, 0);
- }
-
- if (x11_document != 0)
- ActivateTSMDocument (x11_document);
- }
- }
- else
- {
- QuartzMessageServerThread (kXDarwinDeactivate, 0);
-
- if (_x_active)
- {
- if (x11_document != 0)
- DeactivateTSMDocument (x11_document);
- }
- }
+ if (state) {
+ QuartzMessageServerThread (kXDarwinActivate, 0);
+
+ if (!_x_active) {
+ if (x11_document == 0 && darwinKeymapFile == NULL) {
+ OSType types[1];
+ types[0] = kUnicodeDocument;
+ NewTSMDocument (1, types, &x11_document, 0);
+ }
+ if (x11_document != 0) ActivateTSMDocument (x11_document);
+ }
+ } else {
+ QuartzMessageServerThread (kXDarwinDeactivate, 0);
+
+ if (_x_active && x11_document != 0)
+ DeactivateTSMDocument (x11_document);
+ }
+
_x_active = state;
}
-- (void) became_key:(NSWindow *)win
-{
+- (void) became_key:(NSWindow *)win {
[self activateX:NO];
}
-- (void) sendEvent:(NSEvent *)e
-{
+- (void) sendEvent:(NSEvent *)e {
NSEventType type;
BOOL for_appkit, for_x;
@@ -242,44 +218,44 @@ message_kit_thread (SEL selector, NSObject *arg)
}
}
break;
-
- case NSKeyDown: case NSKeyUp:
- if (_x_active) {
- static int swallow_up;
-
- /* No kit window is focused, so send it to X. */
- for_appkit = NO;
- if (type == NSKeyDown) {
- /* Before that though, see if there are any global
- shortcuts bound to it. */
-
- if (X11EnableKeyEquivalents
- && [[self mainMenu] performKeyEquivalent:e]) {
- swallow_up = [e keyCode];
- for_x = NO;
- } else if (!quartzEnableRootless
- && ([e modifierFlags] & ALL_KEY_MASKS)
- == (NSCommandKeyMask | NSAlternateKeyMask)
- && ([e keyCode] == 0 /*a*/
- || [e keyCode] == 53 /*Esc*/)) {
- swallow_up = 0;
- for_x = NO;
+
+ case NSKeyDown: case NSKeyUp:
+ if (_x_active) {
+ static int swallow_up;
+
+ /* No kit window is focused, so send it to X. */
+ for_appkit = NO;
+ if (type == NSKeyDown) {
+ /* Before that though, see if there are any global
+ shortcuts bound to it. */
+
+ if (X11EnableKeyEquivalents
+ && [[self mainMenu] performKeyEquivalent:e]) {
+ swallow_up = [e keyCode];
+ for_x = NO;
+ } else if (!quartzEnableRootless
+ && ([e modifierFlags] & ALL_KEY_MASKS)
+ == (NSCommandKeyMask | NSAlternateKeyMask)
+ && ([e keyCode] == 0 /*a*/
+ || [e keyCode] == 53 /*Esc*/)) {
+ swallow_up = 0;
+ for_x = NO;
#ifdef DARWIN_DDX_MISSING
- QuartzMessageServerThread (kXDarwinToggleFullscreen, 0);
+ QuartzMessageServerThread (kXDarwinToggleFullscreen, 0);
#endif
- }
- } else {
- /* If we saw a key equivalent on the down, don't pass
- the up through to X. */
-
- if (swallow_up != 0 && [e keyCode] == swallow_up) {
- swallow_up = 0;
- for_x = NO;
- }
}
- } else for_x = NO;
- break;
-
+ } else {
+ /* If we saw a key equivalent on the down, don't pass
+ the up through to X. */
+
+ if (swallow_up != 0 && [e keyCode] == swallow_up) {
+ swallow_up = 0;
+ for_x = NO;
+ }
+ }
+ } else for_x = NO;
+ break;
+
case NSFlagsChanged:
/* For the l33t X users who remap modifier keys to normal keysyms. */
if (!_x_active) for_x = NO;
@@ -295,16 +271,16 @@ message_kit_thread (SEL selector, NSObject *arg)
/* FIXME: hack to avoid having to pass the event to appkit,
which would cause it to raise one of its windows. */
_appFlags._active = YES;
-
+
[self activateX:YES];
if ([e data2] & 0x10) X11ApplicationSetFrontProcess();
}
break;
-
- case 18: /* ApplicationDidReactivate */
- if (quartzHasRoot) for_appkit = NO;
- break;
-
+
+ case 18: /* ApplicationDidReactivate */
+ if (quartzHasRoot) for_appkit = NO;
+ break;
+
case NSApplicationDeactivatedEventType:
for_x = NO;
[self activateX:NO];
@@ -320,42 +296,36 @@ message_kit_thread (SEL selector, NSObject *arg)
if (for_x) send_nsevent (type, e);
}
-- (void) set_window_menu:(NSArray *)list
-{
+- (void) set_window_menu:(NSArray *)list {
[_controller set_window_menu:list];
}
-- (void) set_window_menu_check:(NSNumber *)n
-{
+- (void) set_window_menu_check:(NSNumber *)n {
[_controller set_window_menu_check:n];
}
-- (void) set_apps_menu:(NSArray *)list
-{
+- (void) set_apps_menu:(NSArray *)list {
[_controller set_apps_menu:list];
}
-- (void) set_front_process:unused
-{
+- (void) set_front_process:unused {
+ [NSApp activateIgnoringOtherApps:YES];
+
+ if ([self modalWindow] == nil) [self activateX:YES];
QuartzMessageServerThread(kXDarwinBringAllToFront, 0);
}
-- (void) set_can_quit:(NSNumber *)state
-{
+- (void) set_can_quit:(NSNumber *)state {
[_controller set_can_quit:[state boolValue]];
}
-- (void) server_ready:unused
-{
+- (void) server_ready:unused {
[_controller server_ready];
}
-- (void) show_hide_menubar:(NSNumber *)state
-{
- if ([state boolValue])
- ShowMenuBar ();
- else
- HideMenuBar ();
+- (void) show_hide_menubar:(NSNumber *)state {
+ if ([state boolValue]) ShowMenuBar ();
+ else HideMenuBar ();
}
@@ -372,9 +342,7 @@ static void cfrelease (CFAllocatorRef a, const void *b) {
CFRelease (b);
}
-static CFMutableArrayRef
-nsarray_to_cfarray (NSArray *in)
-{
+static CFMutableArrayRef nsarray_to_cfarray (NSArray *in) {
CFMutableArrayRef out;
CFArrayCallBacks cb;
NSObject *ns;
@@ -389,24 +357,22 @@ nsarray_to_cfarray (NSArray *in)
count = [in count];
out = CFArrayCreateMutable (NULL, count, &cb);
- for (i = 0; i < count; i++)
- {
- ns = [in objectAtIndex:i];
-
- if ([ns isKindOfClass:[NSArray class]])
- cf = (CFTypeRef) nsarray_to_cfarray ((NSArray *) ns);
- else
- cf = CFRetain ((CFTypeRef) ns);
-
- CFArrayAppendValue (out, cf);
- CFRelease (cf);
+ for (i = 0; i < count; i++) {
+ ns = [in objectAtIndex:i];
+
+ if ([ns isKindOfClass:[NSArray class]])
+ cf = (CFTypeRef) nsarray_to_cfarray ((NSArray *) ns);
+ else
+ cf = CFRetain ((CFTypeRef) ns);
+
+ CFArrayAppendValue (out, cf);
+ CFRelease (cf);
}
-
+
return out;
}
-static NSMutableArray *
-cfarray_to_nsarray (CFArrayRef in)
-{
+
+static NSMutableArray * cfarray_to_nsarray (CFArrayRef in) {
NSMutableArray *out;
const CFTypeRef *cf;
NSObject *ns;
@@ -415,257 +381,219 @@ cfarray_to_nsarray (CFArrayRef in)
count = CFArrayGetCount (in);
out = [[NSMutableArray alloc] initWithCapacity:count];
- for (i = 0; i < count; i++)
- {
- cf = CFArrayGetValueAtIndex (in, i);
-
- if (CFGetTypeID (cf) == CFArrayGetTypeID ())
- ns = cfarray_to_nsarray ((CFArrayRef) cf);
- else
- ns = [(id)cf retain];
+ for (i = 0; i < count; i++) {
+ cf = CFArrayGetValueAtIndex (in, i);
- [out addObject:ns];
- [ns release];
+ if (CFGetTypeID (cf) == CFArrayGetTypeID ())
+ ns = cfarray_to_nsarray ((CFArrayRef) cf);
+ else
+ ns = [(id)cf retain];
+
+ [out addObject:ns];
+ [ns release];
}
-
+
return out;
}
-- (CFPropertyListRef) prefs_get:(NSString *)key
-{
+- (CFPropertyListRef) prefs_get:(NSString *)key {
CFPropertyListRef value;
value = CFPreferencesCopyAppValue ((CFStringRef) key, CFSTR (APP_PREFS));
- if (value == NULL)
- {
- static CFDictionaryRef defaults;
-
- if (defaults == NULL)
- {
- CFStringRef error = NULL;
- CFDataRef data;
- CFURLRef url;
- SInt32 error_code;
-
- url = (CFURLCreateFromFileSystemRepresentation
- (NULL, (unsigned char *)DEFAULTS_FILE, strlen (DEFAULTS_FILE), false));
- if (CFURLCreateDataAndPropertiesFromResource (NULL, url, &data,
- NULL, NULL,
- &error_code))
- {
- defaults = (CFPropertyListCreateFromXMLData
- (NULL, data, kCFPropertyListMutableContainersAndLeaves, &error));
- if (error != NULL)
- CFRelease (error);
- CFRelease (data);
- }
- CFRelease (url);
+ if (value == NULL) {
+ static CFDictionaryRef defaults;
+
+ if (defaults == NULL) {
+ CFStringRef error = NULL;
+ CFDataRef data;
+ CFURLRef url;
+ SInt32 error_code;
+
+ url = (CFURLCreateFromFileSystemRepresentation
+ (NULL, (unsigned char *)DEFAULTS_FILE, strlen (DEFAULTS_FILE), false));
+ if (CFURLCreateDataAndPropertiesFromResource (NULL, url, &data,
+ NULL, NULL, &error_code)) {
+ defaults = (CFPropertyListCreateFromXMLData
+ (NULL, data, kCFPropertyListMutableContainersAndLeaves, &error));
+ if (error != NULL) CFRelease (error);
+ CFRelease (data);
+ }
+ CFRelease (url);
- if (defaults != NULL)
- {
- NSMutableArray *apps, *elt;
- int count, i;
- NSString *name, *nname;
-
- /* Localize the names in the default apps menu. */
-
- apps = [(NSDictionary *)defaults objectForKey:@PREFS_APPSMENU];
- if (apps != nil)
- {
- count = [apps count];
- for (i = 0; i < count; i++)
- {
- elt = [apps objectAtIndex:i];
- if (elt != nil && [elt isKindOfClass:[NSArray class]])
- {
- name = [elt objectAtIndex:0];
- if (name != nil)
- {
- nname = NSLocalizedString (name, nil);
- if (nname != nil && nname != name)
- [elt replaceObjectAtIndex:0 withObject:nname];
- }
- }
- }
- }
- }
+ if (defaults != NULL) {
+ NSMutableArray *apps, *elt;
+ int count, i;
+ NSString *name, *nname;
+
+ /* Localize the names in the default apps menu. */
+
+ apps = [(NSDictionary *)defaults objectForKey:@PREFS_APPSMENU];
+ if (apps != nil) {
+ count = [apps count];
+ for (i = 0; i < count; i++) {
+ elt = [apps objectAtIndex:i];
+ if (elt != nil && [elt isKindOfClass:[NSArray class]]) {
+ name = [elt objectAtIndex:0];
+ if (name != nil) {
+ nname = NSLocalizedString (name, nil);
+ if (nname != nil && nname != name)
+ [elt replaceObjectAtIndex:0 withObject:nname];
}
+ }
+ }
+ }
+ }
+ }
- if (defaults != NULL)
- value = CFDictionaryGetValue (defaults, key);
-
- if (value != NULL)
- CFRetain (value);
+ if (defaults != NULL) value = CFDictionaryGetValue (defaults, key);
+ if (value != NULL) CFRetain (value);
}
return value;
}
-- (int) prefs_get_integer:(NSString *)key default:(int)def
-{
- CFPropertyListRef value;
- int ret;
-
- value = [self prefs_get:key];
-
- if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ())
- CFNumberGetValue (value, kCFNumberIntType, &ret);
- else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
- ret = CFStringGetIntValue (value);
- else
- ret = def;
-
- if (value != NULL)
- CFRelease (value);
-
- return ret;
+- (int) prefs_get_integer:(NSString *)key default:(int)def {
+ CFPropertyListRef value;
+ int ret;
+
+ value = [self prefs_get:key];
+
+ if (value != NULL && CFGetTypeID (value) == CFNumberGetTypeID ())
+ CFNumberGetValue (value, kCFNumberIntType, &ret);
+ else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
+ ret = CFStringGetIntValue (value);
+ else
+ ret = def;
+
+ if (value != NULL) CFRelease (value);
+
+ return ret;
}
-- (const char *) prefs_get_string:(NSString *)key default:(const char *)def
-{
- CFPropertyListRef value;
- const char *ret = NULL;
-
- value = [self prefs_get:key];
-
- if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
- {
- NSString *s = (NSString *) value;
-
- ret = [s UTF8String];
- }
-
- if (value != NULL)
- CFRelease (value);
-
- return ret != NULL ? ret : def;
+- (const char *) prefs_get_string:(NSString *)key default:(const char *)def {
+ CFPropertyListRef value;
+ const char *ret = NULL;
+
+ value = [self prefs_get:key];
+
+ if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ()) {
+ NSString *s = (NSString *) value;
+
+ ret = [s UTF8String];
+ }
+
+ if (value != NULL) CFRelease (value);
+
+ return ret != NULL ? ret : def;
}
-- (float) prefs_get_float:(NSString *)key default:(float)def
-{
- CFPropertyListRef value;
- float ret = def;
-
- value = [self prefs_get:key];
-
- if (value != NULL
- && CFGetTypeID (value) == CFNumberGetTypeID ()
- && CFNumberIsFloatType (value))
- {
- CFNumberGetValue (value, kCFNumberFloatType, &ret);
- }
- else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
- {
- ret = CFStringGetDoubleValue (value);
- }
-
- if (value != NULL)
- CFRelease (value);
-
- return ret;
+- (float) prefs_get_float:(NSString *)key default:(float)def {
+ CFPropertyListRef value;
+ float ret = def;
+
+ value = [self prefs_get:key];
+
+ if (value != NULL
+ && CFGetTypeID (value) == CFNumberGetTypeID ()
+ && CFNumberIsFloatType (value))
+ CFNumberGetValue (value, kCFNumberFloatType, &ret);
+ else if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
+ ret = CFStringGetDoubleValue (value);
+
+ if (value != NULL) CFRelease (value);
+
+ return ret;
}
-- (int) prefs_get_boolean:(NSString *)key default:(int)def
-{
- CFPropertyListRef value;
- int ret = def;
-
- value = [self prefs_get:key];
-
- if (value != NULL)
- {
- if (CFGetTypeID (value) == CFNumberGetTypeID ())
- CFNumberGetValue (value, kCFNumberIntType, &ret);
- else if (CFGetTypeID (value) == CFBooleanGetTypeID ())
- ret = CFBooleanGetValue (value);
- else if (CFGetTypeID (value) == CFStringGetTypeID ())
- {
- const char *tem = [(NSString *) value UTF8String];
- if (strcasecmp (tem, "true") == 0 || strcasecmp (tem, "yes") == 0)
- ret = YES;
- else
- ret = NO;
- }
-
- CFRelease (value);
+- (int) prefs_get_boolean:(NSString *)key default:(int)def {
+ CFPropertyListRef value;
+ int ret = def;
+
+ value = [self prefs_get:key];
+
+ if (value != NULL) {
+ if (CFGetTypeID (value) == CFNumberGetTypeID ())
+ CFNumberGetValue (value, kCFNumberIntType, &ret);
+ else if (CFGetTypeID (value) == CFBooleanGetTypeID ())
+ ret = CFBooleanGetValue (value);
+ else if (CFGetTypeID (value) == CFStringGetTypeID ()) {
+ const char *tem = [(NSString *) value UTF8String];
+ if (strcasecmp (tem, "true") == 0 || strcasecmp (tem, "yes") == 0)
+ ret = YES;
+ else
+ ret = NO;
}
-
- return ret;
+
+ CFRelease (value);
+ }
+ return ret;
}
-- (NSArray *) prefs_get_array:(NSString *)key
-{
- NSArray *ret = nil;
- CFPropertyListRef value;
-
- value = [self prefs_get:key];
-
- if (value != NULL)
- {
- if (CFGetTypeID (value) == CFArrayGetTypeID ())
- ret = [cfarray_to_nsarray (value) autorelease];
-
- CFRelease (value);
- }
-
- return ret;
+- (NSArray *) prefs_get_array:(NSString *)key {
+ NSArray *ret = nil;
+ CFPropertyListRef value;
+
+ value = [self prefs_get:key];
+
+ if (value != NULL) {
+ if (CFGetTypeID (value) == CFArrayGetTypeID ())
+ ret = [cfarray_to_nsarray (value) autorelease];
+
+ CFRelease (value);
+ }
+
+ return ret;
}
-- (void) prefs_set_integer:(NSString *)key value:(int)value
-{
+- (void) prefs_set_integer:(NSString *)key value:(int)value {
CFNumberRef x;
x = CFNumberCreate (NULL, kCFNumberIntType, &value);
CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS),
- kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+ kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
CFRelease (x);
}
-- (void) prefs_set_float:(NSString *)key value:(float)value
-{
+- (void) prefs_set_float:(NSString *)key value:(float)value {
CFNumberRef x;
x = CFNumberCreate (NULL, kCFNumberFloatType, &value);
CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) x, CFSTR (APP_PREFS),
- kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+ kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
CFRelease (x);
}
-- (void) prefs_set_boolean:(NSString *)key value:(int)value
-{
- CFPreferencesSetValue ((CFStringRef) key,
- (CFTypeRef) value ? kCFBooleanTrue
- : kCFBooleanFalse, CFSTR (APP_PREFS),
- kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-
+- (void) prefs_set_boolean:(NSString *)key value:(int)value {
+ CFPreferencesSetValue ((CFStringRef) key,
+ (CFTypeRef) value ? kCFBooleanTrue
+ : kCFBooleanFalse, CFSTR (APP_PREFS),
+ kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+
}
-- (void) prefs_set_array:(NSString *)key value:(NSArray *)value
-{
- CFArrayRef cfarray;
-
- cfarray = nsarray_to_cfarray (value);
- CFPreferencesSetValue ((CFStringRef) key,
- (CFTypeRef) cfarray,
- CFSTR (APP_PREFS),
- kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
- CFRelease (cfarray);
+- (void) prefs_set_array:(NSString *)key value:(NSArray *)value {
+ CFArrayRef cfarray;
+
+ cfarray = nsarray_to_cfarray (value);
+ CFPreferencesSetValue ((CFStringRef) key,
+ (CFTypeRef) cfarray,
+ CFSTR (APP_PREFS),
+ kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+ CFRelease (cfarray);
}
-- (void) prefs_set_string:(NSString *)key value:(NSString *)value
-{
- CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) value,
- CFSTR (APP_PREFS), kCFPreferencesCurrentUser,
- kCFPreferencesAnyHost);
+- (void) prefs_set_string:(NSString *)key value:(NSString *)value {
+ CFPreferencesSetValue ((CFStringRef) key, (CFTypeRef) value,
+ CFSTR (APP_PREFS), kCFPreferencesCurrentUser,
+ kCFPreferencesAnyHost);
}
-- (void) prefs_synchronize
-{
+- (void) prefs_synchronize {
CFPreferencesAppSynchronize (kCFPreferencesCurrentApplication);
}
@@ -717,14 +645,12 @@ cfarray_to_nsarray (CFArrayRef in)
}
/* This will end up at the end of the responder chain. */
-- (void) copy:sender
-{
- QuartzMessageServerThread (kXDarwinPasteboardNotify, 1,
- AppleWMCopyToPasteboard);
+- (void) copy:sender {
+ QuartzMessageServerThread (kXDarwinPasteboardNotify, 1,
+ AppleWMCopyToPasteboard);
}
-- (BOOL) x_active
-{
+- (BOOL) x_active {
return _x_active;
}
@@ -732,75 +658,62 @@ cfarray_to_nsarray (CFArrayRef in)
static NSArray *
array_with_strings_and_numbers (int nitems, const char **items,
- const char *numbers)
-{
- NSMutableArray *array, *subarray;
- NSString *string;
- NSString *number;
- int i;
+ const char *numbers) {
+ NSMutableArray *array, *subarray;
+ NSString *string, *number;
+ int i;
- /* (Can't autorelease on the X server thread) */
-
- array = [[NSMutableArray alloc] initWithCapacity:nitems];
-
- for (i = 0; i < nitems; i++)
- {
- subarray = [[NSMutableArray alloc] initWithCapacity:2];
-
- string = [[NSString alloc] initWithUTF8String:items[i]];
- [subarray addObject:string];
- [string release];
-
- if (numbers[i] != 0)
- {
- number = [[NSString alloc] initWithFormat:@"%d", numbers[i]];
- [subarray addObject:number];
- [number release];
- }
- else
- [subarray addObject:@""];
-
- [array addObject:subarray];
- [subarray release];
- }
-
- return array;
+ /* (Can't autorelease on the X server thread) */
+
+ array = [[NSMutableArray alloc] initWithCapacity:nitems];
+
+ for (i = 0; i < nitems; i++) {
+ subarray = [[NSMutableArray alloc] initWithCapacity:2];
+
+ string = [[NSString alloc] initWithUTF8String:items[i]];
+ [subarray addObject:string];
+ [string release];
+
+ if (numbers[i] != 0) {
+ number = [[NSString alloc] initWithFormat:@"%d", numbers[i]];
+ [subarray addObject:number];
+ [number release];
+ } else
+ [subarray addObject:@""];
+
+ [array addObject:subarray];
+ [subarray release];
+ }
+
+ return array;
}
-void
-X11ApplicationSetWindowMenu (int nitems, const char **items,
- const char *shortcuts)
-{
- NSArray *array;
- array = array_with_strings_and_numbers (nitems, items, shortcuts);
-
- /* Send the array of strings over to the appkit thread */
-
- message_kit_thread (@selector (set_window_menu:), array);
- [array release];
+void X11ApplicationSetWindowMenu (int nitems, const char **items,
+ const char *shortcuts) {
+ NSArray *array;
+ array = array_with_strings_and_numbers (nitems, items, shortcuts);
+
+ /* Send the array of strings over to the appkit thread */
+
+ message_kit_thread (@selector (set_window_menu:), array);
+ [array release];
}
-void
-X11ApplicationSetWindowMenuCheck (int idx)
-{
- NSNumber *n;
-
- n = [[NSNumber alloc] initWithInt:idx];
-
- message_kit_thread (@selector (set_window_menu_check:), n);
-
- [n release];
+void X11ApplicationSetWindowMenuCheck (int idx) {
+ NSNumber *n;
+
+ n = [[NSNumber alloc] initWithInt:idx];
+
+ message_kit_thread (@selector (set_window_menu_check:), n);
+
+ [n release];
}
-void
-X11ApplicationSetFrontProcess (void)
-{
+void X11ApplicationSetFrontProcess (void) {
message_kit_thread (@selector (set_front_process:), nil);
}
-void
-X11ApplicationSetCanQuit (int state)
-{
+void X11ApplicationSetCanQuit (int state) {
NSNumber *n;
n = [[NSNumber alloc] initWithBool:state];
@@ -810,15 +723,11 @@ X11ApplicationSetCanQuit (int state)
[n release];
}
-void
-X11ApplicationServerReady (void)
-{
+void X11ApplicationServerReady (void) {
message_kit_thread (@selector (server_ready:), nil);
}
-void
-X11ApplicationShowHideMenubar (int state)
-{
+void X11ApplicationShowHideMenubar (int state) {
NSNumber *n;
n = [[NSNumber alloc] initWithBool:state];
@@ -828,27 +737,20 @@ X11ApplicationShowHideMenubar (int state)
[n release];
}
-static void *
-create_thread (void *func, void *arg)
-{
+static void * create_thread (void *func, void *arg) {
pthread_attr_t attr;
pthread_t tid;
pthread_attr_init (&attr);
-
pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
-
pthread_create (&tid, &attr, func, arg);
-
pthread_attr_destroy (&attr);
return (void *) tid;
}
-static void
-check_xinitrc (void)
-{
+static void check_xinitrc (void) {
char *tem, buf[1024];
NSString *msg;
@@ -856,8 +758,7 @@ check_xinitrc (void)
return;
tem = getenv ("HOME");
- if (tem == NULL)
- goto done;
+ if (tem == NULL) goto done;
snprintf (buf, sizeof (buf), "%s/.xinitrc", tem);
if (access (buf, F_OK) != 0)
@@ -872,29 +773,26 @@ Would you like to move aside the existing file and use the standard X11 \
environment?", @"Startup xinitrc dialog");
if (NSRunAlertPanel (nil, msg, NSLocalizedString (@"Yes", @""),
- NSLocalizedString (@"No", @""), nil)
- == NSAlertDefaultReturn)
- {
- char buf2[1024];
- int i = -1;
-
- snprintf (buf2, sizeof (buf2), "%s.old", buf);
-
- for (i = 1; access (buf2, F_OK) == 0; i++)
- snprintf (buf2, sizeof (buf2), "%s.old.%d", buf, i);
-
- rename (buf, buf2);
+ NSLocalizedString (@"No", @""), nil)
+ == NSAlertDefaultReturn) {
+ char buf2[1024];
+ int i = -1;
+
+ snprintf (buf2, sizeof (buf2), "%s.old", buf);
+
+ for (i = 1; access (buf2, F_OK) == 0; i++)
+ snprintf (buf2, sizeof (buf2), "%s.old.%d", buf, i);
+
+ rename (buf, buf2);
}
- done:
+ done:
[X11App prefs_set_boolean:@PREFS_DONE_XINIT_CHECK value:YES];
[X11App prefs_synchronize];
}
-void
-X11ApplicationMain (int argc, const char *argv[],
- void (*server_thread) (void *), void *server_arg)
-{
+void X11ApplicationMain (int argc, const char *argv[],
+ void (*server_thread) (void *), void *server_arg) {
NSAutoreleasePool *pool;
#ifdef DEBUG
@@ -935,154 +833,87 @@ X11ApplicationMain (int argc, const char *argv[],
/* event conversion */
static inline unsigned short
-convert_flags (unsigned int nsflags)
-{
- unsigned int xflags;
+convert_flags (unsigned int nsflags) {
+ unsigned int xflags = 0;
if (nsflags == ~0) return 0xffff;
- xflags = 0;
-
if (nsflags & NSAlphaShiftKeyMask) xflags |= LockMask;
- if (nsflags & NSShiftKeyMask) xflags |= ShiftMask;
- if (nsflags & NSControlKeyMask) xflags |= ControlMask;
+ if (nsflags & NSShiftKeyMask) xflags |= ShiftMask;
+ if (nsflags & NSControlKeyMask) xflags |= ControlMask;
if (nsflags & NSAlternateKeyMask) xflags |= Mod1Mask;
- if (nsflags & NSCommandKeyMask) xflags |= Mod2Mask;
+ if (nsflags & NSCommandKeyMask) xflags |= Mod2Mask;
/* FIXME: secondaryfn? */
return xflags;
}
-static void
-send_nsevent (NSEventType type, NSEvent *e)
-{
- static unsigned int button_state = 0;
- NSRect screen;
- NSPoint location;
- NSWindow *window;
- int pointer_x, pointer_y;
- xEvent xe;
-
- memset (&xe, 0, sizeof (xe));
-
- /* This field should be filled in for every event */
- xe.u.keyButtonPointer.time = GetTimeInMillis();
-
- /* convert location to global top-left coordinates */
- location = [e locationInWindow];
- window = [e window];
- screen = [[[NSScreen screens] objectAtIndex:0] frame];
-
- if (window != nil) {
- NSRect frame = [window frame];
- pointer_x = location.x + frame.origin.x;
- pointer_y = (((screen.origin.y + screen.size.height)
- - location.y) - frame.origin.y);
- } else {
- pointer_x = location.x;
- pointer_y = (screen.origin.y + screen.size.height) - location.y;
- }
-
- xe.u.keyButtonPointer.rootX = pointer_x;
- xe.u.keyButtonPointer.rootY = pointer_y;
-
- switch (type) {
- float count;
-
- case NSLeftMouseDown:
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 1;
- goto do_press_event;
-
- case NSRightMouseDown:
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 3;
- goto do_press_event;
+
+// This code should probably be merged with that in XDarwin's XServer.m - BB
+static void send_nsevent (NSEventType type, NSEvent *e) {
+ // static unsigned int button_state = 0;
+ NSRect screen;
+ NSPoint location;
+ NSWindow *window;
+ int pointer_x, pointer_y, ev_button, ev_type;
+ // int num_events=0, i=0, state;
+ xEvent xe;
+
+ /* convert location to global top-left coordinates */
+ location = [e locationInWindow];
+ window = [e window];
+ screen = [[[NSScreen screens] objectAtIndex:0] frame];
+
+ if (window != nil) {
+ NSRect frame = [window frame];
+ pointer_x = location.x + frame.origin.x;
+ pointer_y = (((screen.origin.y + screen.size.height)
+ - location.y) - frame.origin.y);
+ } else {
+ pointer_x = location.x;
+ pointer_y = (screen.origin.y + screen.size.height) - location.y;
+ }
- case NSOtherMouseDown:
- xe.u.u.type = ButtonPress;
- xe.u.u.detail = 2; /* FIXME? */
- goto do_press_event;
+ pointer_y -= aquaMenuBarHeight;
+ // state = convert_flags ([e modifierFlags]);
- do_press_event:
- if (!quartzProcs->IsX11Window([e window], [e windowNumber])) {
- /* X server doesn't grok this window, drop the event.
-
- Note: theoretically this isn't necessary, but if I click
- on the menubar, we get sent a LeftMouseDown when the
- release happens, but no LeftMouseUp is ever seen! */
+ switch (type) {
+ case NSLeftMouseDown: ev_button=1; ev_type=ButtonPress; goto handle_mouse;
+ case NSOtherMouseDown: ev_button=2; ev_type=ButtonPress; goto handle_mouse;
+ case NSRightMouseDown: ev_button=3; ev_type=ButtonPress; goto handle_mouse;
+ case NSLeftMouseUp: ev_button=1; ev_type=ButtonRelease; goto handle_mouse;
+ case NSOtherMouseUp: ev_button=2; ev_type=ButtonRelease; goto handle_mouse;
+ case NSRightMouseUp: ev_button=3; ev_type=ButtonRelease; goto handle_mouse;
+ case NSLeftMouseDragged: ev_button=1; ev_type=MotionNotify; goto handle_mouse;
+ case NSOtherMouseDragged: ev_button=2; ev_type=MotionNotify; goto handle_mouse;
+ case NSRightMouseDragged: ev_button=3; ev_type=MotionNotify; goto handle_mouse;
+ case NSMouseMoved: ev_button=0; ev_type=MotionNotify; goto handle_mouse;
+ handle_mouse:
+ /* I'm not sure the below code is necessary or useful (-bb)
+ if(ev_type==ButtonPress) {
+ if (!quartzProcs->IsX11Window([e window], [e windowNumber])) {
+ fprintf(stderr, "Dropping event because it's not a window\n");
+ break;
+ }
+ button_state |= (1 << ev_button);
+ DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y);
+ } else if (ev_type==ButtonRelease && (button_state & (1 << ev_button)) == 0) break;
+ */
+ DarwinSendPointerEvents(ev_type, ev_button, pointer_x, pointer_y);
break;
- }
- goto do_event;
-
- case NSLeftMouseUp:
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 1;
- goto do_release_event;
-
- case NSRightMouseUp:
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 3;
- goto do_release_event;
-
- case NSOtherMouseUp:
- xe.u.u.type = ButtonRelease;
- xe.u.u.detail = 2; /* FIXME? */
- goto do_release_event;
-
- do_release_event:
- if ((button_state & (1 << xe.u.u.detail)) == 0)
- {
- /* X didn't see the button press for this release, so skip it */
- break;
- }
- goto do_event;
-
- case NSMouseMoved:
- case NSLeftMouseDragged:
- case NSRightMouseDragged:
- case NSOtherMouseDragged:
- xe.u.u.type = MotionNotify;
- goto do_event;
-
- case NSKeyDown:
- xe.u.u.type = KeyPress;
- xe.u.u.detail = [e keyCode];
- goto do_event;
-
- case NSKeyUp:
- xe.u.u.type = KeyRelease;
- xe.u.u.detail = [e keyCode];
- goto do_event;
-
- case NSScrollWheel:
- xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]);
- count = [e deltaY];
- xe.u.u.detail = count > 0.0f ? 4 : 5;
- for (count = fabs(count); count > 0.0; count = count - 1.0f) {
- xe.u.u.type = ButtonPress;
- DarwinEQEnqueue(&xe);
- xe.u.u.type = ButtonRelease;
- DarwinEQEnqueue(&xe);
- }
- xe.u.u.type = 0;
- break;
-
- case NSFlagsChanged:
- xe.u.u.type = kXDarwinUpdateModifiers;
- xe.u.clientMessage.u.l.longs0 = [e modifierFlags];
- DarwinEQEnqueue (&xe);
- break;
-
- do_event:
- // xe.u.keyButtonPointer.state = convert_flags ([e modifierFlags]);
- DarwinEQEnqueue (&xe);
- break;
-
- default: break; /* for gcc */
- }
-
- if (xe.u.u.type == ButtonPress) button_state |= (1 << xe.u.u.detail);
- else if (xe.u.u.type == ButtonRelease) button_state &= ~(1 << xe.u.u.detail);
+ case NSScrollWheel:
+ DarwinSendScrollEvents([e deltaY], pointer_x, pointer_y);
+ break;
+
+ case NSKeyDown: // do we need to translate these keyCodes?
+ case NSKeyUp:
+ DarwinSendKeyboardEvents((type == NSKeyDown)?KeyPress:KeyRelease, [e keyCode]);
+ break;
+
+ case NSFlagsChanged:
+ DarwinUpdateModKeys([e modifierFlags]);
+ break;
+ default: break; /* for gcc */
+ }
}
More information about the xorg-commit
mailing list