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)
156 lines
5.7 KiB
Diff
156 lines
5.7 KiB
Diff
From c4fba8198bacc8ecf911cb15c9cd9314f3204a85 Mon Sep 17 00:00:00 2001
|
|
From: Owen W. Taylor <otaylor@fishsoup.net>
|
|
Date: Wed, 21 Oct 2009 19:22:35 -0400
|
|
Subject: [PATCH] Add a new_windows_always_on_top preference
|
|
|
|
Add a /apps/metacity/general/new_windows_always_on_top preference.
|
|
When set, new windows are always placed on top, even if they are
|
|
denied focus.
|
|
|
|
This is useful on large screens and multihead setups where the
|
|
tasklist can be hard to notice and difficult to mouse to, so the
|
|
normal behavior of flashing in the tasklist is less effective.
|
|
---
|
|
src/core/prefs.c | 17 ++++++++++++++++-
|
|
src/core/window.c | 6 +++++-
|
|
src/include/prefs.h | 2 ++
|
|
src/metacity.schemas.in.in | 29 +++++++++++++++++++++++++++++
|
|
4 files changed, 52 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/core/prefs.c b/src/core/prefs.c
|
|
index e03c816..1bf888b 100644
|
|
--- a/src/core/prefs.c
|
|
+++ b/src/core/prefs.c
|
|
@@ -79,6 +79,7 @@ static MetaFocusMode focus_mode = META_FOCUS_MODE_CLICK;
|
|
static MetaFocusNewWindows focus_new_windows = META_FOCUS_NEW_WINDOWS_SMART;
|
|
static GSList *no_focus_windows = NULL;
|
|
static gboolean raise_on_click = TRUE;
|
|
+static gboolean new_windows_always_on_top = TRUE;
|
|
static char* current_theme = NULL;
|
|
static int num_workspaces = 4;
|
|
static MetaActionTitlebar action_double_click_titlebar = META_ACTION_TITLEBAR_TOGGLE_MAXIMIZE;
|
|
@@ -358,6 +359,11 @@ static MetaBoolPreference preferences_bool[] =
|
|
&raise_on_click,
|
|
TRUE,
|
|
},
|
|
+ { "/apps/metacity/general/new_windows_always_on_top",
|
|
+ META_PREF_NEW_WINDOWS_ALWAYS_ON_TOP,
|
|
+ &new_windows_always_on_top,
|
|
+ TRUE,
|
|
+ },
|
|
{ "/apps/metacity/general/titlebar_uses_system_font",
|
|
META_PREF_TITLEBAR_FONT, /* note! shares a pref */
|
|
&use_system_font,
|
|
@@ -1271,6 +1277,12 @@ meta_prefs_get_raise_on_click (void)
|
|
return raise_on_click || focus_mode == META_FOCUS_MODE_CLICK;
|
|
}
|
|
|
|
+gboolean
|
|
+meta_prefs_get_new_windows_always_on_top (void)
|
|
+{
|
|
+ return new_windows_always_on_top;
|
|
+}
|
|
+
|
|
const char*
|
|
meta_prefs_get_theme (void)
|
|
{
|
|
@@ -1709,7 +1721,10 @@ meta_preference_to_string (MetaPreference pref)
|
|
|
|
case META_PREF_RAISE_ON_CLICK:
|
|
return "RAISE_ON_CLICK";
|
|
-
|
|
+
|
|
+ case META_PREF_NEW_WINDOWS_ALWAYS_ON_TOP:
|
|
+ return "NEW_WINDOWS_ALWAYS_ON_TOP";
|
|
+
|
|
case META_PREF_THEME:
|
|
return "THEME";
|
|
|
|
diff --git a/src/core/window.c b/src/core/window.c
|
|
index 10da47a..0ae6a01 100644
|
|
--- a/src/core/window.c
|
|
+++ b/src/core/window.c
|
|
@@ -1983,7 +1983,7 @@ window_state_on_map (MetaWindow *window,
|
|
if (!(window->input || window->take_focus))
|
|
{
|
|
*takes_focus = FALSE;
|
|
- return;
|
|
+ goto out;
|
|
}
|
|
|
|
/* Terminal usage may be different; some users intend to launch
|
|
@@ -2030,6 +2030,10 @@ window_state_on_map (MetaWindow *window,
|
|
/* The default is correct for these */
|
|
break;
|
|
}
|
|
+
|
|
+ out:
|
|
+ if (meta_prefs_get_new_windows_always_on_top ())
|
|
+ *places_on_top = TRUE;
|
|
}
|
|
|
|
static gboolean
|
|
diff --git a/src/include/prefs.h b/src/include/prefs.h
|
|
index 6698dfe..8c7cd09 100644
|
|
--- a/src/include/prefs.h
|
|
+++ b/src/include/prefs.h
|
|
@@ -35,6 +35,7 @@ typedef enum
|
|
META_PREF_FOCUS_MODE,
|
|
META_PREF_FOCUS_NEW_WINDOWS,
|
|
META_PREF_RAISE_ON_CLICK,
|
|
+ META_PREF_NEW_WINDOWS_ALWAYS_ON_TOP,
|
|
META_PREF_ACTION_DOUBLE_CLICK_TITLEBAR,
|
|
META_PREF_ACTION_MIDDLE_CLICK_TITLEBAR,
|
|
META_PREF_ACTION_RIGHT_CLICK_TITLEBAR,
|
|
@@ -81,6 +82,7 @@ guint meta_prefs_get_mouse_button_menu (void);
|
|
MetaFocusMode meta_prefs_get_focus_mode (void);
|
|
MetaFocusNewWindows meta_prefs_get_focus_new_windows (void);
|
|
gboolean meta_prefs_get_raise_on_click (void);
|
|
+gboolean meta_prefs_get_new_windows_always_on_top (void);
|
|
const char* meta_prefs_get_theme (void);
|
|
/* returns NULL if GTK default should be used */
|
|
const PangoFontDescription* meta_prefs_get_titlebar_font (void);
|
|
diff --git a/src/metacity.schemas.in.in b/src/metacity.schemas.in.in
|
|
index 25ca5f3..14155fa 100644
|
|
--- a/src/metacity.schemas.in.in
|
|
+++ b/src/metacity.schemas.in.in
|
|
@@ -166,6 +166,35 @@
|
|
</schema>
|
|
|
|
<schema>
|
|
+ <key>/schemas/apps/metacity/general/new_windows_always_on_top</key>
|
|
+ <applyto>/apps/metacity/general/new_windows_always_on_top</applyto>
|
|
+ <owner>metacity</owner>
|
|
+ <type>bool</type>
|
|
+ <default>false</default>
|
|
+ <locale name="C">
|
|
+ <short>Whether new windows should always be placed on top</short>
|
|
+ <long>
|
|
+ The normal behavior is that if a new window is not given the
|
|
+ focus (since, for example, the user has interacted with another
|
|
+ window after launching an application), then if the window would
|
|
+ be stacked on top of the focus window, the window is instead
|
|
+ stacked beneath and flashed in the taskbar. This behavior can
|
|
+ be annoying on large screens and multihead setups where the
|
|
+ taskbar is hard to notice and difficult to get to, so this option,
|
|
+ if set, disables this behavior, and new windows are always placed
|
|
+ on top, whether or not they get focus.
|
|
+
|
|
+ Note that if this option is set, a new window may completely hide
|
|
+ the focus window but not get focus itself, which can be quite confusing
|
|
+ to users. Also, note that setting this option breaks the normal
|
|
+ invariant in the 'click' focus mode that the topmost window always
|
|
+ has focus, so its most suitable for use with the 'mouse' and
|
|
+ 'sloppy' focus modes.
|
|
+ </long>
|
|
+ </locale>
|
|
+ </schema>
|
|
+
|
|
+ <schema>
|
|
<key>/schemas/apps/metacity/general/action_double_click_titlebar</key>
|
|
<applyto>/apps/metacity/general/action_double_click_titlebar</applyto>
|
|
<owner>metacity</owner>
|
|
--
|
|
1.6.5.rc2
|
|
|