summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-29 21:18:20 +0000
committerDana Jansens <danakj@orodu.net>2003-03-29 21:18:20 +0000
commit2135d9e2fda58dcf1c9a40266fd1b38c1cd4d71f (patch)
tree0fc9e2c24f85606e7b40d24e735d25c339ef583a
parent4d5885d271d4943636e7e775492e8f4bd7fe8a84 (diff)
make SendToDesktop action work right, give the option of following
-rw-r--r--openbox/action.c13
-rw-r--r--openbox/action.h9
2 files changed, 17 insertions, 5 deletions
diff --git a/openbox/action.c b/openbox/action.c
index 6b98bcb2..614b196a 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -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)
diff --git a/openbox/action.h b/openbox/action.h
index a8f37e15..9c204e35 100644
--- a/openbox/action.h
+++ b/openbox/action.h
@@ -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);