]> Dogcows Code - chaz/openbox/blobdiff - openbox/actions/desktop.c
Merge branch 'master' into chaz
[chaz/openbox] / openbox / actions / desktop.c
index 9c8d2a7b207d56d18a7d214b74b991c2a5552cbf..8dadf550af3b2ea2787015be50528e48ce8c7a2d 100644 (file)
@@ -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,
This page took 0.02232 seconds and 4 git commands to generate.