diff options
author | Thomas James Alexander Thurman <tthurman@src.gnome.org> | 2008-12-21 05:35:30 +0000 |
---|---|---|
committer | Thomas James Alexander Thurman <tthurman@src.gnome.org> | 2008-12-21 05:35:30 +0000 |
commit | 01027006a736e5a9ec1965acaff2709f4f6020ba (patch) | |
tree | fb4f419a4b8cd5a1b9f202e2374dc751c36e0fad | |
parent | 38faa8fe109071dcb9c49fdbc13774d13f4691ee (diff) | |
download | metacity-01027006a736e5a9ec1965acaff2709f4f6020ba.tar.gz |
windows which attempt to present themselves but are offscreen end up
* src/core/window.c: windows which attempt to present themselves
but are offscreen end up demanding attention, unless they
are transient, when they move to the current workspace
as before. Closes #482354.
svn path=/trunk/; revision=4060
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/core/window.c | 19 |
2 files changed, 24 insertions, 2 deletions
@@ -1,3 +1,10 @@ +2008-12-21 Colin Walters <walters@verbum.org> + + * src/core/window.c: windows which attempt to present themselves + but are offscreen end up demanding attention, unless they + are transient, when they move to the current workspace + as before. Closes #482354. + 2008-12-19 Thomas Thurman <tthurman@gnome.org> * src/ui/frames.c: when the user double-clicks the title bar, diff --git a/src/core/window.c b/src/core/window.c index d098285c..0f93c409 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -2952,8 +2952,23 @@ window_activate (MetaWindow *window, /* Get window on current or given workspace */ if (workspace == NULL) workspace = window->screen->active_workspace; - if (!meta_window_located_on_workspace (window, workspace)) - meta_window_change_workspace (window, workspace); + + /* For non-transient windows, we just set up a pulsing indicator, + rather than move windows or workspaces. + See http://bugzilla.gnome.org/show_bug.cgi?id=482354 */ + if (window->xtransient_for == None && + !meta_window_located_on_workspace (window, workspace)) + { + meta_window_set_demands_attention (window); + /* We've marked it as demanding, don't need to do anything else. */ + return; + } + else if (window->xtransient_for != None) + { + /* Move transients to current workspace - preference dialogs should appear over + the source window. */ + meta_window_change_workspace (window, workspace); + } if (window->shaded) meta_window_unshade (window, timestamp); |