X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Factions%2Fdesktop.c;h=8dadf550af3b2ea2787015be50528e48ce8c7a2d;hb=HEAD;hp=9c8d2a7b207d56d18a7d214b74b991c2a5552cbf;hpb=fa39954c9dd5e5212816d0b5006451734137a74c;p=chaz%2Fopenbox diff --git a/openbox/actions/desktop.c b/openbox/actions/desktop.c index 9c8d2a7b..8dadf550 100644 --- a/openbox/actions/desktop.c +++ b/openbox/actions/desktop.c @@ -54,7 +54,6 @@ static void i_post_func(gpointer options); static gpointer setup_go_last_func(xmlNodePtr node); static gpointer setup_send_last_func(xmlNodePtr node); static gpointer setup_go_abs_func(xmlNodePtr node); -static gpointer setup_send_abs_func(xmlNodePtr node); static gpointer setup_go_next_func(xmlNodePtr node, ObActionsIPreFunc *pre, ObActionsIInputFunc *input, @@ -125,8 +124,6 @@ void action_desktop_startup(void) actions_register("SendToDesktopLast", setup_send_last_func, free_func, run_func); actions_register("Desktop", setup_go_abs_func, free_func, run_func); - actions_register("SendToDesktop", setup_send_abs_func, - free_func, run_func); actions_register_i("DesktopNext", setup_go_next_func, free_func, run_func); actions_register_i("SendToDesktopNext", setup_send_next_func, free_func, run_func); @@ -244,6 +241,11 @@ static gpointer setup_send_func(xmlNodePtr node, Options *o; o = setup_func(node, pre, input, cancel, post); + if ((n = obt_xml_find_node(node, "desktop"))) { + /* 3.4 compatibility */ + o->u.abs.desktop = obt_xml_node_int(n) - 1; + o->type = ABSOLUTE; + } o->send = TRUE; o->follow = TRUE; @@ -265,7 +267,6 @@ static void free_func(gpointer o) g_slice_free(Options, o); } -/* Always return FALSE because its not interactive */ static gboolean run_func(ObActionsData *data, gpointer options) { Options *o = options; @@ -318,8 +319,9 @@ static gboolean i_input_func(guint initial_state, gpointer options, gboolean *used) { - guint mods; + guint mods, initial_mods; + initial_mods = obt_keyboard_only_modmasks(initial_state); mods = obt_keyboard_only_modmasks(e->xkey.state); if (e->type == KeyRelease) { /* remove from the state the mask of the modifier key being @@ -335,11 +337,11 @@ static gboolean i_input_func(guint initial_state, return FALSE; /* There were no modifiers and they pressed enter */ - else if ((sym == XK_Return || sym == XK_KP_Enter) && !initial_state) + else if ((sym == XK_Return || sym == XK_KP_Enter) && !initial_mods) return FALSE; } /* They released the modifiers */ - else if (e->type == KeyRelease && initial_state && !(mods & initial_state)) + else if (e->type == KeyRelease && initial_mods && !(mods & initial_mods)) { return FALSE; } @@ -349,7 +351,8 @@ static gboolean i_input_func(guint initial_state, static gboolean i_pre_func(guint initial_state, gpointer options) { - if (!initial_state) { + guint initial_mods = obt_keyboard_only_modmasks(initial_state); + if (!initial_mods) { Options *o = options; o->interactive = FALSE; return FALSE; @@ -403,18 +406,6 @@ static gpointer setup_go_abs_func(xmlNodePtr node) return o; } -static gpointer setup_send_abs_func(xmlNodePtr node) -{ - xmlNodePtr n; - Options *o = setup_follow(node); - o->type = ABSOLUTE; - if ((n = obt_xml_find_node(node, "desktop"))) - o->u.abs.desktop = obt_xml_node_int(n) - 1; - else - o->u.abs.desktop = screen_desktop; - return o; -} - static void setup_rel(Options *o, xmlNodePtr node, gboolean lin, ObDirection dir, ObActionsIPreFunc *pre,