shell-app: Raise windows in reverse order to preserve the stacking

ShellApp keeps track of windows sorted by most recently used first
which means that when raising windows we need to start from the end of
the list to finish with the correct stacking order.

This patch just makes the code agree with the comment which was
already there.

https://bugzilla.gnome.org/show_bug.cgi?id=676371
This commit is contained in:
Rui Matos 2012-05-19 17:25:00 +02:00
parent ace42d845c
commit b61ada72cc

View File

@ -493,7 +493,7 @@ shell_app_activate_window (ShellApp *app,
return; return;
else else
{ {
GSList *iter; GSList *windows_reversed, *iter;
ShellGlobal *global = shell_global_get (); ShellGlobal *global = shell_global_get ();
MetaScreen *screen = shell_global_get_screen (global); MetaScreen *screen = shell_global_get_screen (global);
MetaDisplay *display = meta_screen_get_display (screen); MetaDisplay *display = meta_screen_get_display (screen);
@ -511,13 +511,16 @@ shell_app_activate_window (ShellApp *app,
/* Now raise all the other windows for the app that are on /* Now raise all the other windows for the app that are on
* the same workspace, in reverse order to preserve the stacking. * the same workspace, in reverse order to preserve the stacking.
*/ */
for (iter = windows; iter; iter = iter->next) windows_reversed = g_slist_copy (windows);
windows_reversed = g_slist_reverse (windows_reversed);
for (iter = windows_reversed; iter; iter = iter->next)
{ {
MetaWindow *other_window = iter->data; MetaWindow *other_window = iter->data;
if (other_window != window) if (other_window != window)
meta_window_raise (other_window); meta_window_raise (other_window);
} }
g_slist_free (windows_reversed);
/* If we have a transient that the user's interacted with more recently than /* If we have a transient that the user's interacted with more recently than
* the window, pick that. * the window, pick that.