don't move parents and children over when inserting desktops - cuz then they all get moved a bunch of times, just move the top direct parent

This commit is contained in:
Dana Jansens 2007-07-20 20:37:18 -04:00
parent eb0e483405
commit 9091da403e

View file

@ -641,10 +641,16 @@ void screen_add_desktop(gboolean current)
for (it = client_list; it; it = g_list_next(it)) { for (it = client_list; it; it = g_list_next(it)) {
ObClient *c = it->data; ObClient *c = it->data;
if (c->desktop != DESKTOP_ALL && c->desktop >= screen_desktop) if (c->desktop != DESKTOP_ALL && c->desktop >= screen_desktop &&
/* don't move direct children, they'll be moved with their
parent - which will have to be on the same desktop */
!client_direct_parent(c))
{
ob_debug("moving window %s\n", c->title);
client_set_desktop(c, c->desktop+1, FALSE, TRUE); client_set_desktop(c, c->desktop+1, FALSE, TRUE);
} }
} }
}
} }
void screen_remove_desktop(gboolean current) void screen_remove_desktop(gboolean current)
@ -670,9 +676,13 @@ void screen_remove_desktop(gboolean current)
if (WINDOW_IS_CLIENT(it->data)) { if (WINDOW_IS_CLIENT(it->data)) {
ObClient *c = it->data; ObClient *c = it->data;
guint d = c->desktop; guint d = c->desktop;
if (d != DESKTOP_ALL && d >= movedesktop) { if (d != DESKTOP_ALL && d >= movedesktop &&
client_set_desktop(c, c->desktop - 1, TRUE, TRUE); /* don't move direct children, they'll be moved with their
parent - which will have to be on the same desktop */
!client_direct_parent(c))
{
ob_debug("moving window %s\n", c->title); ob_debug("moving window %s\n", c->title);
client_set_desktop(c, c->desktop - 1, TRUE, TRUE);
} }
/* raise all the windows that are on the current desktop which /* raise all the windows that are on the current desktop which
is being merged */ is being merged */