discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=39c6f1c33a1a63f050b55a9b8639e0b784468fb7
commit 39c6f1c33a1a63f050b55a9b8639e0b784468fb7 Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Wed Feb 3 17:56:14 2016 -0500 ignore subsequent bindings with ANY context after finding a previous ANY binding if multiple ANY bindings exist for a given event, return the first one found --- src/bin/e_bindings.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c index 89cb8a9..9d294c1 100644 --- a/src/bin/e_bindings.c +++ b/src/bin/e_bindings.c @@ -432,6 +432,7 @@ e_bindings_mouse_button_find(E_Binding_Context ctxt, E_Binding_Event_Mouse_Butto ((binding->any_mod) || (binding->mod == ev->modifiers))) { if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue; + if (act && (binding->ctxt == E_BINDING_CONTEXT_ANY)) continue; act = e_action_find(binding->action); if (bind_ret) *bind_ret = binding; if (!act) continue; @@ -685,6 +686,7 @@ e_bindings_key_event_find(E_Binding_Context ctxt, Ecore_Event_Key *ev, E_Binding ((binding->any_mod) || (binding->mod == mod))) { if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue; + if (act && (binding->ctxt == E_BINDING_CONTEXT_ANY)) continue; act = e_action_find(binding->action); if (bind_ret) *bind_ret = binding; if (!act) continue; @@ -844,6 +846,7 @@ e_bindings_edge_event_find(E_Binding_Context ctxt, E_Event_Zone_Edge *ev, Eina_B ((binding->any_mod) || (binding->mod == mod))) { if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue; + if (act && (binding->ctxt == E_BINDING_CONTEXT_ANY)) continue; act = e_action_find(binding->action); if (bind_ret) *bind_ret = binding; if (!act) continue; @@ -1014,6 +1017,7 @@ e_bindings_signal_find(E_Binding_Context ctxt, const char *sig, const char *src, ((binding->any_mod) || (binding->mod == mod))) { if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue; + if (act && (binding->ctxt == E_BINDING_CONTEXT_ANY)) continue; act = e_action_find(binding->action); if (bind_ret) *bind_ret = binding; if (!act) continue; @@ -1177,6 +1181,7 @@ e_bindings_wheel_find(E_Binding_Context ctxt, E_Binding_Event_Wheel *ev, E_Bindi ((binding->any_mod) || (binding->mod == ev->modifiers))) { if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue; + if (act && (binding->ctxt == E_BINDING_CONTEXT_ANY)) continue; act = e_action_find(binding->action); if (bind_ret) *bind_ret = binding; if (!act) continue; @@ -1279,6 +1284,7 @@ e_bindings_acpi_find(E_Binding_Context ctxt, E_Event_Acpi *ev, E_Binding_Acpi ** if (binding->status != ev->status) continue; } if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue; + if (act && (binding->ctxt == E_BINDING_CONTEXT_ANY)) continue; act = e_action_find(binding->action); if (bind_ret) *bind_ret = binding; if (!act) continue; --