all repos — openbox @ ad5b92588fbe36100cdc4ae7064883cd16e13a1e

openbox fork - make it a bit more like ryudo

Don't make desktop switching interactive when no mods used. (Fix bug #5203)

Make mod state passing more consistent, and always give actions the full state
instead of stripping sometimes. (They ended up expecting it stripped always).
Dana Jansens danakj@orodu.net
commit

ad5b92588fbe36100cdc4ae7064883cd16e13a1e

parent

58f666a2a5111a16cbb1b416852e90c4c79f6671

M openbox/actions.copenbox/actions.c

@@ -375,7 +375,7 @@ if (grab_keyboard()) {

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 */
M openbox/actions/cyclewindows.copenbox/actions/cyclewindows.c

@@ -181,8 +181,9 @@ gpointer options,

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 @@ 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) { 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;
M openbox/actions/desktop.copenbox/actions/desktop.c

@@ -319,8 +319,9 @@ ObtIC *ic,

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 @@ if (sym == XK_Escape)

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_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;
M openbox/actions/directionalwindows.copenbox/actions/directionalwindows.c

@@ -259,8 +259,9 @@ ObtIC *ic,

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 @@ 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) { 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; }