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
This commit is contained in:
Thomas James Alexander Thurman 2008-12-21 05:35:30 +00:00
parent 38faa8fe10
commit 01027006a7
2 changed files with 24 additions and 2 deletions

View File

@ -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> 2008-12-19 Thomas Thurman <tthurman@gnome.org>
* src/ui/frames.c: when the user double-clicks the title bar, * src/ui/frames.c: when the user double-clicks the title bar,

View File

@ -2952,8 +2952,23 @@ window_activate (MetaWindow *window,
/* Get window on current or given workspace */ /* Get window on current or given workspace */
if (workspace == NULL) if (workspace == NULL)
workspace = window->screen->active_workspace; 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) if (window->shaded)
meta_window_unshade (window, timestamp); meta_window_unshade (window, timestamp);