]> Dogcows Code - chaz/openbox/commitdiff
Don't make desktop switching interactive when no mods used. (Fix bug #5203)
authorDana Jansens <danakj@orodu.net>
Sun, 16 Oct 2011 15:10:14 +0000 (11:10 -0400)
committerDana Jansens <danakj@orodu.net>
Sun, 30 Sep 2012 18:46:11 +0000 (14:46 -0400)
Make mod state passing more consistent, and always give actions the full state
instead of stripping sometimes. (They ended up expecting it stripped always).

openbox/actions.c
openbox/actions/cyclewindows.c
openbox/actions/desktop.c
openbox/actions/directionalwindows.c

index ee9d55f1bf8f42936c41594d263e0c2fab07d0a2..2d3438cf9f1c54da4a87d6c5243c07f2044c42d2 100644 (file)
@@ -375,7 +375,7 @@ static gboolean actions_interactive_begin_act(ObActionsAct *act, guint state)
         interactive_act = act;
         actions_act_ref(interactive_act);
 
-        interactive_initial_state = obt_keyboard_only_modmasks(state);
+        interactive_initial_state = state;
 
         /* if using focus_delay, stop the timer now so that focus doesn't go
            moving on us, which would kill the action */
index 5f0db27cb5173c0f6e09a9a9e944e428548bb945..a64d225694910b1f560a99eeeb03bc7b2803cc82 100644 (file)
@@ -181,8 +181,9 @@ static gboolean i_input_func(guint initial_state,
                              gboolean *used)
 {
     Options *o = options;
-    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
@@ -201,14 +202,14 @@ static gboolean i_input_func(guint initial_state,
         }
 
         /* 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) {
             o->cancel = FALSE;
             o->state = e->xkey.state;
             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))
     {
         o->cancel = FALSE;
         o->state = e->xkey.state;
index a3a1f6b9c121b00f6158a5ef42d14a1fb6681d7f..70d807dbc6699172994abb8a1c4b7707b78febf2 100644 (file)
@@ -319,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
@@ -336,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;
     }
@@ -350,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 (!inital_mods) {
         Options *o = options;
         o->interactive = FALSE;
         return FALSE;
index 602e7edc33fb1dc26b67fc5fe28fc8335b5d64cc..0ad464b735837bc6e18b3b2030f5c180442e0ef4 100644 (file)
@@ -259,8 +259,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
@@ -278,14 +279,13 @@ static gboolean i_input_func(guint initial_state,
         }
 
         /* 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) {
             end_cycle(FALSE, e->xkey.state, options);
             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)) {
         end_cycle(FALSE, e->xkey.state, options);
         return FALSE;
     }
This page took 0.037516 seconds and 4 git commands to generate.