make SendToDesktop action work right, give the option of following
This commit is contained in:
parent
4d5885d271
commit
2135d9e2fd
2 changed files with 17 additions and 5 deletions
|
@ -92,6 +92,7 @@ Action *action_from_string(char *name)
|
||||||
a = action_new(action_toggle_maximize_vert);
|
a = action_new(action_toggle_maximize_vert);
|
||||||
} else if (!g_ascii_strcasecmp(name, "sendtodesktop")) {
|
} else if (!g_ascii_strcasecmp(name, "sendtodesktop")) {
|
||||||
a = action_new(action_send_to_desktop);
|
a = action_new(action_send_to_desktop);
|
||||||
|
a->data.sendto.follow = TRUE;
|
||||||
} else if (!g_ascii_strcasecmp(name, "sendtonextdesktop")) {
|
} else if (!g_ascii_strcasecmp(name, "sendtonextdesktop")) {
|
||||||
a = action_new(action_send_to_next_desktop);
|
a = action_new(action_send_to_next_desktop);
|
||||||
a->data.sendtonextprev.wrap = FALSE;
|
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)
|
void action_send_to_desktop(union ActionData *data)
|
||||||
{
|
{
|
||||||
if (data->desktop.c)
|
if (data->sendto.c) {
|
||||||
if (data->desktop.desk < screen_num_desktops ||
|
if (data->sendto.desk < screen_num_desktops ||
|
||||||
data->desktop.desk == DESKTOP_ALL)
|
data->sendto.desk == DESKTOP_ALL) {
|
||||||
client_set_desktop(data->desktop.c, data->desktop.desk, TRUE);
|
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)
|
void action_send_to_next_desktop(union ActionData *data)
|
||||||
|
|
|
@ -26,6 +26,12 @@ struct MoveResizeRelative {
|
||||||
int delta;
|
int delta;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct SendToDesktop {
|
||||||
|
Client *c;
|
||||||
|
guint desk;
|
||||||
|
gboolean follow;
|
||||||
|
};
|
||||||
|
|
||||||
struct SendToNextPreviousDesktop {
|
struct SendToNextPreviousDesktop {
|
||||||
Client *c;
|
Client *c;
|
||||||
gboolean wrap;
|
gboolean wrap;
|
||||||
|
@ -67,6 +73,7 @@ union ActionData {
|
||||||
struct Execute execute;
|
struct Execute execute;
|
||||||
struct ClientAction client;
|
struct ClientAction client;
|
||||||
struct MoveResizeRelative relative;
|
struct MoveResizeRelative relative;
|
||||||
|
struct SendToDesktop sendto;
|
||||||
struct SendToNextPreviousDesktop sendtonextprev;
|
struct SendToNextPreviousDesktop sendtonextprev;
|
||||||
struct Desktop desktop;
|
struct Desktop desktop;
|
||||||
struct NextPreviousDesktop nextprevdesktop;
|
struct NextPreviousDesktop nextprevdesktop;
|
||||||
|
@ -155,7 +162,7 @@ void action_maximize_vert(union ActionData *data);
|
||||||
void action_unmaximize_vert(union ActionData *data);
|
void action_unmaximize_vert(union ActionData *data);
|
||||||
/* ClientAction */
|
/* ClientAction */
|
||||||
void action_toggle_maximize_vert(union ActionData *data);
|
void action_toggle_maximize_vert(union ActionData *data);
|
||||||
/* Desktop */
|
/* SendToDesktop */
|
||||||
void action_send_to_desktop(union ActionData *data);
|
void action_send_to_desktop(union ActionData *data);
|
||||||
/* SendToNextPreviousDesktop */
|
/* SendToNextPreviousDesktop */
|
||||||
void action_send_to_next_desktop(union ActionData *data);
|
void action_send_to_next_desktop(union ActionData *data);
|
||||||
|
|
Loading…
Reference in a new issue