workspaceThumbnail: don't move transient windows for workspaces

When we shift workspaces to create a blank one for a window or
application, all of the window actors are shifted down.  However, some
of these window actors are transient windows attached to a main window.
When these windows are moved to a different workspace, the main window
is moved along with it. When the main window is moved, these windows
are also moved. This creates a double move of the windows.
This double movement leads to unexpected results where workspaces are
collapsed and windows are in incorrect positions.
This patch prevents movement of these transient windows, only grabbing
the main (ancestor) windows to move to a different workspace.

https://bugzilla.gnome.org/show_bug.cgi?id=705174
This commit is contained in:
Bradley Pankow 2013-07-30 16:35:52 -04:00 committed by Jasper St. Pierre
parent be355bf7b4
commit 8dfcee9039

View File

@ -739,6 +739,10 @@ const ThumbnailsBox = new Lang.Class({
// Nab all the windows below us. // Nab all the windows below us.
let windows = global.get_window_actors().filter(function(win) { let windows = global.get_window_actors().filter(function(win) {
// If the window is attached to an ancestor, we don't need/want to move it
if (!!win.meta_window.get_transient_for())
return false;
if (isWindow) if (isWindow)
return win.get_workspace() >= newWorkspaceIndex && win != source; return win.get_workspace() >= newWorkspaceIndex && win != source;
else else