Stijn Hoop) - Add patches for GNOME bugs 445447 - Application-induced window raise fails when raise_on_click off (rhbz 526045) 530702 - compiz doesn't start if metacity compositor is enabled (rhbz 537791) 559816 - Doesn't update keybindings being disabled/cleared (rhbz 532282) 567528 - Cannot raise windows from applications in Tcl/Tk and Java (rhbz 503522) 577576 - Failed to read saved session file warning on new sessions (rhbz 493245) 598231 - When Chromium rings the bell, metacity quits(rhbz 532282) 598995 - Don't focus ancestor window on a different workspace (rhbz 237158) 599097 - For mouse and sloppy focus, return to "mouse mode" on motion (rhbz 530261) 599248 - Add no_focus_windows preference to list windows that shouldn't be focused (rhbz 530262) 599261 - Add a new_windows_always_on_top preference (rhbz 530263) 599262 - Add XFCE Terminal as a terminal 604319 - XIOError unknown display (rhbz 537845)
73 lines
2.8 KiB
Diff
73 lines
2.8 KiB
Diff
From 7e116a394689718567406837740679c1f1f0d74f Mon Sep 17 00:00:00 2001
|
|
From: Owen W. Taylor <otaylor@fishsoup.net>
|
|
Date: Mon, 19 Oct 2009 19:41:54 -0400
|
|
Subject: [PATCH] Allow explicit raises from same client, not just same app
|
|
|
|
We currently allow XRaiseWindow when the same application (defined
|
|
by the window group) is focused, but the kind of old applications
|
|
that XRaiseWindow are frequently not setting the window group.
|
|
|
|
Expand the check to allow the same X client (defined by the looking
|
|
at client ID) to raise windows above the focus window.
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=567528
|
|
---
|
|
src/core/window.c | 22 ++++++++++++++++++++++
|
|
1 files changed, 22 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/src/core/window.c b/src/core/window.c
|
|
index 6de86ee..8d029a2 100644
|
|
--- a/src/core/window.c
|
|
+++ b/src/core/window.c
|
|
@@ -47,6 +47,7 @@
|
|
#include "effects.h"
|
|
|
|
#include <X11/Xatom.h>
|
|
+#include <X11/Xlibint.h> /* For display->resource_mask */
|
|
#include <string.h>
|
|
|
|
#ifdef HAVE_SHAPE
|
|
@@ -72,6 +73,9 @@ static gboolean process_property_notify (MetaWindow *window,
|
|
static void meta_window_show (MetaWindow *window);
|
|
static void meta_window_hide (MetaWindow *window);
|
|
|
|
+static gboolean meta_window_same_client (MetaWindow *window,
|
|
+ MetaWindow *other_window);
|
|
+
|
|
static void meta_window_save_rect (MetaWindow *window);
|
|
static void save_user_window_placement (MetaWindow *window);
|
|
static void force_save_user_window_placement (MetaWindow *window);
|
|
@@ -4708,6 +4712,7 @@ meta_window_configure_request (MetaWindow *window,
|
|
}
|
|
else if (active_window &&
|
|
!meta_window_same_application (window, active_window) &&
|
|
+ !meta_window_same_client (window, active_window) &&
|
|
XSERVER_TIME_IS_BEFORE (window->net_wm_user_time,
|
|
active_window->net_wm_user_time))
|
|
{
|
|
@@ -7544,6 +7549,23 @@ meta_window_same_application (MetaWindow *window,
|
|
group==other_group;
|
|
}
|
|
|
|
+/* Generally meta_window_same_application() is a better idea
|
|
+ * of "sameness", since it handles the case where multiple apps
|
|
+ * want to look like the same app or the same app wants to look
|
|
+ * like multiple apps, but in the case of workarounds for legacy
|
|
+ * applications (which likely aren't setting the group properly
|
|
+ * anyways), it may be desirable to check this as well.
|
|
+ */
|
|
+static gboolean
|
|
+meta_window_same_client (MetaWindow *window,
|
|
+ MetaWindow *other_window)
|
|
+{
|
|
+ int resource_mask = window->display->xdisplay->resource_mask;
|
|
+
|
|
+ return ((window->xwindow & ~resource_mask) ==
|
|
+ (other_window->xwindow & ~resource_mask));
|
|
+}
|
|
+
|
|
void
|
|
meta_window_refresh_resize_popup (MetaWindow *window)
|
|
{
|
|
--
|
|
1.6.5.rc2
|