make SendToDesktop action work right, give the option of following
authorDana Jansens <danakj@orodu.net>
Sat, 29 Mar 2003 21:18:20 +0000 (21:18 +0000)
committerDana Jansens <danakj@orodu.net>
Sat, 29 Mar 2003 21:18:20 +0000 (21:18 +0000)
openbox/action.c
openbox/action.h

index 6b98bcb..614b196 100644 (file)
@@ -92,6 +92,7 @@ Action *action_from_string(char *name)
         a = action_new(action_toggle_maximize_vert);
     } else if (!g_ascii_strcasecmp(name, "sendtodesktop")) {
         a = action_new(action_send_to_desktop);
+        a->data.sendto.follow = TRUE;
     } else if (!g_ascii_strcasecmp(name, "sendtonextdesktop")) {
         a = action_new(action_send_to_next_desktop);
         a->data.sendtonextprev.wrap = FALSE;
@@ -365,10 +366,14 @@ void action_toggle_maximize_vert(union ActionData *data)
 
 void action_send_to_desktop(union ActionData *data)
 {
-    if (data->desktop.c)
-        if (data->desktop.desk < screen_num_desktops ||
-            data->desktop.desk == DESKTOP_ALL)
-            client_set_desktop(data->desktop.c, data->desktop.desk, TRUE);
+    if (data->sendto.c) {
+        if (data->sendto.desk < screen_num_desktops ||
+            data->sendto.desk == DESKTOP_ALL) {
+            client_set_desktop(data->desktop.c,
+                               data->sendto.desk, data->sendto.follow);
+            if (data->sendto.follow) screen_set_desktop(data->sendto.desk);
+        }
+    }
 }
 
 void action_send_to_next_desktop(union ActionData *data)
index a8f37e1..9c204e3 100644 (file)
@@ -26,6 +26,12 @@ struct MoveResizeRelative {
     int delta;
 };
 
+struct SendToDesktop {
+    Client *c;
+    guint desk;
+    gboolean follow;
+};
+
 struct SendToNextPreviousDesktop {
     Client *c;
     gboolean wrap;
@@ -67,6 +73,7 @@ union ActionData {
     struct Execute execute;
     struct ClientAction client;
     struct MoveResizeRelative relative;
+    struct SendToDesktop sendto;
     struct SendToNextPreviousDesktop sendtonextprev;
     struct Desktop desktop;
     struct NextPreviousDesktop nextprevdesktop;
@@ -155,7 +162,7 @@ void action_maximize_vert(union ActionData *data);
 void action_unmaximize_vert(union ActionData *data);
 /* ClientAction */
 void action_toggle_maximize_vert(union ActionData *data);
-/* Desktop */
+/* SendToDesktop */
 void action_send_to_desktop(union ActionData *data);
 /* SendToNextPreviousDesktop */
 void action_send_to_next_desktop(union ActionData *data);