when holding Shift for the client list menus, bring the selected client to the curren...
authorDana Jansens <danakj@orodu.net>
Tue, 22 Dec 2009 16:44:07 +0000 (11:44 -0500)
committerDana Jansens <danakj@orodu.net>
Tue, 22 Dec 2009 16:44:07 +0000 (11:44 -0500)
openbox/client_list_combined_menu.c
openbox/client_list_menu.c

index 593010e..5b79b80 100644 (file)
@@ -114,10 +114,12 @@ static void menu_execute(ObMenuEntry *self, ObMenuFrame *f,
     else {
         ObClient *t = self->data.normal.data;
         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
                desktop */
-            if (t->desktop == DESKTOP_ALL)
+            if (!here && t->desktop == DESKTOP_ALL)
                 screen_set_desktop(self->id, FALSE);
         }
         else
index 2e87259..c49e63e 100644 (file)
@@ -101,10 +101,12 @@ static void desk_menu_execute(ObMenuEntry *self, ObMenuFrame *f,
 {
     ObClient *t = self->data.normal.data;
     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
            desktop */
-        if (t->desktop == DESKTOP_ALL)
+        if (!here && t->desktop == DESKTOP_ALL)
             screen_set_desktop(self->id, FALSE);
     }
     else