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;

-- 


Reply via email to