diff options
| author | Dana Jansens <danakj@orodu.net> | 2011-10-16 11:10:14 -0400 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2012-09-30 14:46:11 -0400 |
| commit | ad5b92588fbe36100cdc4ae7064883cd16e13a1e (patch) | |
| tree | 4a6cd8ce8adac234350dc6866da9a5c93ed20c38 /openbox/actions/desktop.c | |
| parent | 58f666a2a5111a16cbb1b416852e90c4c79f6671 (diff) | |
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).
Diffstat (limited to 'openbox/actions/desktop.c')
| -rw-r--r-- | openbox/actions/desktop.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/openbox/actions/desktop.c b/openbox/actions/desktop.c index a3a1f6b9..70d807db 100644 --- a/openbox/actions/desktop.c +++ b/openbox/actions/desktop.c @@ -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; |
