From: Dana Jansens Date: Sat, 29 Mar 2003 21:18:20 +0000 (+0000) Subject: make SendToDesktop action work right, give the option of following X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=2135d9e2fda58dcf1c9a40266fd1b38c1cd4d71f;p=chaz%2Fopenbox make SendToDesktop action work right, give the option of following --- 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);