when holding Shift for the client list menus, bring the selected client to the current desktop (Request #4284)

This commit is contained in:
Dana Jansens 2009-12-22 11:44:07 -05:00
parent ce24cbd045
commit 7ac0b91965
2 changed files with 8 additions and 4 deletions

View file

@ -114,10 +114,12 @@ static void menu_execute(ObMenuEntry *self, ObMenuFrame *f,
else { else {
ObClient *t = self->data.normal.data; ObClient *t = self->data.normal.data;
if (t) { /* it's set to NULL if its destroyed */ if (t) { /* it's set to NULL if its destroyed */
client_activate(t, TRUE, FALSE, TRUE, TRUE, TRUE); gboolean here = state & ShiftMask;
client_activate(t, TRUE, here, TRUE, TRUE, TRUE);
/* if the window is omnipresent then we need to go to its /* if the window is omnipresent then we need to go to its
desktop */ desktop */
if (t->desktop == DESKTOP_ALL) if (!here && t->desktop == DESKTOP_ALL)
screen_set_desktop(self->id, FALSE); screen_set_desktop(self->id, FALSE);
} }
else else

View file

@ -101,10 +101,12 @@ static void desk_menu_execute(ObMenuEntry *self, ObMenuFrame *f,
{ {
ObClient *t = self->data.normal.data; ObClient *t = self->data.normal.data;
if (t) { /* it's set to NULL if its destroyed */ if (t) { /* it's set to NULL if its destroyed */
client_activate(t, TRUE, FALSE, TRUE, TRUE, TRUE); gboolean here = state & ShiftMask;
client_activate(t, TRUE, here, TRUE, TRUE, TRUE);
/* if the window is omnipresent then we need to go to its /* if the window is omnipresent then we need to go to its
desktop */ desktop */
if (t->desktop == DESKTOP_ALL) if (!here && t->desktop == DESKTOP_ALL)
screen_set_desktop(self->id, FALSE); screen_set_desktop(self->id, FALSE);
} }
else else