discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=93b106f17eb97014afd5aac7daaabfac8af903a8

commit 93b106f17eb97014afd5aac7daaabfac8af903a8
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Mon Jan 25 12:51:56 2016 -0500

    add edge binding event find function
    
    similar to key/mouse/wheel functions
---
 src/bin/e_bindings.c | 25 +++++++++++++++++++++++++
 src/bin/e_bindings.h |  1 +
 2 files changed, 26 insertions(+)

diff --git a/src/bin/e_bindings.c b/src/bin/e_bindings.c
index ad4d12d..d2af7cf 100644
--- a/src/bin/e_bindings.c
+++ b/src/bin/e_bindings.c
@@ -869,6 +869,31 @@ e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge 
edge, Eina_Bool drag_onl
 }
 
 E_API E_Action *
+e_bindings_edge_event_find(E_Binding_Context ctxt, E_Event_Zone_Edge *ev, 
Eina_Bool click, E_Binding_Edge **bind_ret)
+{
+   E_Binding_Edge *binding;
+   E_Binding_Modifier mod = 0;
+   E_Action *act = NULL;
+   Eina_List *l;
+
+   mod = _e_bindings_modifiers(ev->modifiers);
+   EINA_LIST_FOREACH(edge_bindings, l, binding)
+     /* A value of <= -1.0 for the delay indicates it as a mouse-click binding 
on that edge */
+     if (((binding->edge == ev->edge)) &&
+         ((click && (binding->delay == -1.0 * click)) || (!click && 
(binding->delay >= 0.0))) &&
+         ((binding->drag_only == ev->drag) || ev->drag) &&
+         ((binding->any_mod) || (binding->mod == mod)))
+       {
+          if (!_e_bindings_context_match(binding->ctxt, ctxt)) continue;
+          act = e_action_find(binding->action);
+          if (!act) continue;
+          if (bind_ret) *bind_ret = binding;
+          break;
+       }
+   return act;
+}
+
+E_API E_Action *
 e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, 
E_Event_Zone_Edge *ev)
 {
    E_Binding_Modifier mod = 0;
diff --git a/src/bin/e_bindings.h b/src/bin/e_bindings.h
index 001c659..0c71c10 100644
--- a/src/bin/e_bindings.h
+++ b/src/bin/e_bindings.h
@@ -168,6 +168,7 @@ E_API Eina_Bool   e_bindings_key_allowed(const char *key);
 E_API void        e_bindings_edge_add(E_Binding_Context ctxt, E_Zone_Edge 
edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char 
*action, const char *params, float delay);
 E_API Eina_Bool   e_bindings_edge_flippable_get(E_Zone_Edge edge);
 E_API Eina_Bool   e_bindings_edge_non_flippable_get(E_Zone_Edge edge);
+E_API E_Action *e_bindings_edge_event_find(E_Binding_Context ctxt, 
E_Event_Zone_Edge *ev, Eina_Bool click, E_Binding_Edge **bind_ret);
 E_API E_Binding_Edge *e_bindings_edge_get(const char *action, E_Zone_Edge 
edge, int click);
 E_API void        e_bindings_edge_del(E_Binding_Context ctxt, E_Zone_Edge 
edge, Eina_Bool drag_only, E_Binding_Modifier mod, int any_mod, const char 
*action, const char *params, float delay);
 E_API E_Action   *e_bindings_edge_in_event_handle(E_Binding_Context ctxt, 
E_Object *obj, E_Event_Zone_Edge *ev);

-- 


Reply via email to