discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=4c431c8b9ccf9b5916ff7f21a1ec2399e09b3979

commit 4c431c8b9ccf9b5916ff7f21a1ec2399e09b3979
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Jun 9 20:16:08 2017 -0400

    edje: add set_pointer_mode() to embryo functions
    
    this should probably be a description-level property
---
 data/edje/include/edje.inc  |  1 +
 src/lib/edje/edje_embryo.c  | 31 +++++++++++++++++++++++++++++++
 src/lib/edje/edje_private.h |  2 ++
 src/lib/edje/edje_util.c    | 10 ++++++++++
 4 files changed, 44 insertions(+)

diff --git a/data/edje/include/edje.inc b/data/edje/include/edje.inc
index 5fa08bf308..bc60a83c3e 100644
--- a/data/edje/include/edje.inc
+++ b/data/edje/include/edje.inc
@@ -133,6 +133,7 @@ native       set_min_size     (Float:w, Float:h);
 native       set_max_size     (Float:w, Float:h);
 native       set_mouse_events (part_id, ev);
 native       get_mouse_events (part_id);
+native       set_pointer_mode(part_id, mode);
 native       set_repeat_events(part_id, rep);
 native       get_repeat_events(part_id);
 native       set_ignore_flags (part_id, flags);
diff --git a/src/lib/edje/edje_embryo.c b/src/lib/edje/edje_embryo.c
index e6963b6fcb..081fe0e620 100644
--- a/src/lib/edje/edje_embryo.c
+++ b/src/lib/edje/edje_embryo.c
@@ -187,6 +187,14 @@
  * //set_effect(part_id, Effect:fx)
  * set_mouse_events(part_id, ev)
  * get_mouse_events(part_id)
+ *
+ * Pointer_Mode {
+ *   POINTER_MODE_AUTOGRAB = 0,
+ *   POINTER_MODE_NOGRAB = 1,
+ *   POINTER_MODE_NOGREP = 2,
+ * }
+ * 
+ * set_pointer_mode(part_id, mode)
  * set_repeat_events(part_id, rep)
  * get_repeat_events(part_id)
  * set_ignore_flags(part_id, flags)
@@ -3600,6 +3608,28 @@ _edje_embryo_fn_get_mouse_events(Embryo_Program *ep, 
Embryo_Cell *params)
 
 }
 
+/* set_pointer_mode(part_id, mode) */
+static Embryo_Cell
+_edje_embryo_fn_set_pointer_mode(Embryo_Program *ep, Embryo_Cell *params)
+{
+   int part_id = 0;
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   CHKPARAM(2);
+
+   part_id = params[1];
+   if (part_id < 0) return 0;
+
+   ed = embryo_program_data_get(ep);
+   rp = ed->table_parts[part_id % ed->table_parts_size];
+
+   if (rp)
+     _edje_real_part_pointer_mode_set(ed, rp, params[2]);
+
+   return 0;
+}
+
 /* set_repeat_events(part_id, rep) */
 static Embryo_Cell
 _edje_embryo_fn_set_repeat_events(Embryo_Program *ep, Embryo_Cell *params)
@@ -4557,6 +4587,7 @@ _edje_embryo_script_init(Edje_Part_Collection *edc)
 
    embryo_program_native_call_add(ep, "set_mouse_events", 
_edje_embryo_fn_set_mouse_events);
    embryo_program_native_call_add(ep, "get_mouse_events", 
_edje_embryo_fn_get_mouse_events);
+   embryo_program_native_call_add(ep, "set_pointer_mode", 
_edje_embryo_fn_set_pointer_mode);
    embryo_program_native_call_add(ep, "set_repeat_events", 
_edje_embryo_fn_set_repeat_events);
    embryo_program_native_call_add(ep, "get_repeat_events", 
_edje_embryo_fn_get_repeat_events);
    embryo_program_native_call_add(ep, "set_ignore_flags", 
_edje_embryo_fn_set_ignore_flags);
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 11d3055062..8e51730627 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -2028,6 +2028,7 @@ struct _Edje_Real_Part
    FLOAT_T                   description_pos; // 8
    Edje_Rectangle            req; // 16
    int                       x, y, w, h; // 16
+   Evas_Object_Pointer_Mode  pointer_mode;
 #ifdef EDJE_CALC_CACHE
    unsigned short            state; // 2
 #endif
@@ -3090,6 +3091,7 @@ Eina_Bool _edje_real_part_mouse_events_get(Edje *ed, 
Edje_Real_Part *rp);
 void _edje_real_part_mouse_events_set(Edje *ed, Edje_Real_Part *rp, Eina_Bool 
mouse_events);
 Eina_Bool _edje_real_part_repeat_events_get(Edje *ed, Edje_Real_Part *rp);
 void _edje_real_part_repeat_events_set(Edje *ed, Edje_Real_Part *rp, Eina_Bool 
repeat_events);
+void _edje_real_part_pointer_mode_set(Edje *ed, Edje_Real_Part *rp, 
Evas_Object_Pointer_Mode mode);
 Evas_Event_Flags _edje_real_part_ignore_flags_get(Edje *ed, Edje_Real_Part 
*rp);
 void _edje_real_part_ignore_flags_set(Edje *ed, Edje_Real_Part *rp, 
Evas_Event_Flags ignore_flags);
 Evas_Event_Flags _edje_real_part_mask_flags_get(Edje *ed, Edje_Real_Part *rp);
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c
index 2f09b3f4cf..60ad9777fa 100644
--- a/src/lib/edje/edje_util.c
+++ b/src/lib/edje/edje_util.c
@@ -6524,6 +6524,16 @@ _edje_real_part_repeat_events_set(Edje *ed EINA_UNUSED, 
Edje_Real_Part *rp, Eina
      evas_object_repeat_events_set(rp->object, 0);
 }
 
+void
+_edje_real_part_pointer_mode_set(Edje *ed EINA_UNUSED, Edje_Real_Part *rp, 
Evas_Object_Pointer_Mode mode)
+{
+   if (!rp) return;
+
+   rp->pointer_mode = mode;
+
+   evas_object_pointer_mode_set(rp->object, mode);
+}
+
 Evas_Event_Flags
 _edje_real_part_ignore_flags_get(Edje *ed EINA_UNUSED, Edje_Real_Part *rp)
 {

-- 


Reply via email to