aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xquartz/X11Application.m
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2011-07-01 16:49:54 +0200
committermarha <marha@users.sourceforge.net>2011-07-01 16:49:54 +0200
commit3bbcbc59b6d98f09b26f39d6208faec76cc6aa3e (patch)
tree3e798726828ac0fa7153e841f77f8d4cf52855db /xorg-server/hw/xquartz/X11Application.m
parent83cb62fe8002927ba95861a4fd21cc44c48bfcf7 (diff)
parentd9f970a847e1af706f07560ef163b229bb592307 (diff)
downloadvcxsrv-3bbcbc59b6d98f09b26f39d6208faec76cc6aa3e.tar.gz
vcxsrv-3bbcbc59b6d98f09b26f39d6208faec76cc6aa3e.tar.bz2
vcxsrv-3bbcbc59b6d98f09b26f39d6208faec76cc6aa3e.zip
Merge remote-tracking branch 'origin/released'
Conflicts: apps/xwininfo/configure.ac libX11/configure.ac mesalib/src/glsl/ast_function.cpp mesalib/src/glsl/ast_to_hir.cpp mesalib/src/glsl/glsl_parser_extras.cpp mesalib/src/glsl/glsl_parser_extras.h mesalib/src/glsl/ir.cpp mesalib/src/glsl/ir.h mesalib/src/glsl/ir_constant_expression.cpp mesalib/src/glsl/ir_validate.cpp mesalib/src/glsl/lower_mat_op_to_vec.cpp mesalib/src/mesa/program/ir_to_mesa.cpp mesalib/src/mesa/state_tracker/st_cb_drawpixels.c mesalib/src/mesa/state_tracker/st_cb_texture.c mesalib/src/mesa/state_tracker/st_context.h mesalib/src/mesa/state_tracker/st_format.h mkfontscale/configure.ac xorg-server/Xext/xvmc.c xorg-server/configure.ac xorg-server/dix/Makefile.am xorg-server/fb/fbarc.c xorg-server/fb/fbgc.c xorg-server/glx/glapi_gentable.c xorg-server/glx/glxdri2.c xorg-server/glx/glxscreens.c xorg-server/hw/xfree86/Makefile.am xorg-server/hw/xfree86/loader/Makefile.am xorg-server/hw/xquartz/X11Application.m xorg-server/hw/xquartz/mach-startup/Makefile.am xorg-server/hw/xwin/XWin.rc xorg-server/hw/xwin/winmultiwindowwindow.c xorg-server/hw/xwin/winmultiwindowwndproc.c xorg-server/os/Makefile.am xorg-server/test/Makefile.am xorg-server/xfixes/region.c xorg-server/xkeyboard-config/symbols/ma
Diffstat (limited to 'xorg-server/hw/xquartz/X11Application.m')
-rw-r--r--xorg-server/hw/xquartz/X11Application.m25
1 files changed, 16 insertions, 9 deletions
diff --git a/xorg-server/hw/xquartz/X11Application.m b/xorg-server/hw/xquartz/X11Application.m
index 9894b4ee6..d30ff3aa9 100644
--- a/xorg-server/hw/xquartz/X11Application.m
+++ b/xorg-server/hw/xquartz/X11Application.m
@@ -338,18 +338,21 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
case NSAppKitDefined:
switch ([e subtype]) {
+ static BOOL x_was_active = NO;
+
case NSApplicationActivatedEventType:
for_x = NO;
- if ([self modalWindow] == nil) {
+ if ([e window] == nil && x_was_active) {
BOOL order_all_windows = YES, workspaces, ok;
for_appkit = NO;
-
- /* FIXME: hack to avoid having to pass the event to appkit,
- which would cause it to raise one of its windows. */
+
+ /* FIXME: This is a hack to avoid passing the event to AppKit which
+ * would result in it raising one of its windows.
+ */
_appFlags._active = YES;
-
- [self activateX:YES];
-
+
+ X11ApplicationSetFrontProcess();
+
/* Get the Spaces preference for SwitchOnActivate */
(void)CFPreferencesAppSynchronize(CFSTR("com.apple.dock"));
workspaces = CFPreferencesGetAppBooleanValue(CFSTR("workspaces"), CFSTR("com.apple.dock"), &ok);
@@ -370,8 +373,9 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
* If there are no active windows, and there are minimized windows, we should
* be restoring one of them.
*/
- if ([e data2] & 0x10) // 0x10 is set when we use cmd-tab or the dock icon
+ if ([e data2] & 0x10) { // 0x10 (bfCPSOrderAllWindowsForward) is set when we use cmd-tab or the dock icon
DarwinSendDDXEvent(kXquartzBringAllToFront, 1, order_all_windows);
+ }
}
break;
@@ -381,7 +385,10 @@ static void message_kit_thread (SEL selector, NSObject *arg) {
case NSApplicationDeactivatedEventType:
for_x = NO;
- [self activateX:NO];
+
+ x_was_active = _x_active;
+ if(_x_active)
+ [self activateX:NO];
break;
}
break;