cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=815ebc0b0eb513072ae35ac801304a3228f208e2

commit 815ebc0b0eb513072ae35ac801304a3228f208e2
Author: Jee-Yong Um <con...@gmail.com>
Date:   Wed Jul 29 22:29:41 2015 +0200

    edje_embryo: add methods to handle event flags.
    
    Summary:
    Add embryo methods that change the state
    whether Edje_Part will handle Evas_Event or not.
    
    Reviewers: Hermet, woohyun, cedric
    
    Reviewed By: cedric
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D2807
    
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 data/edje/include/edje.inc  |  4 ++
 src/lib/edje/edje_embryo.c  | 98 +++++++++++++++++++++++++++++++++++++++++++++
 src/lib/edje/edje_private.h |  4 ++
 src/lib/edje/edje_util.c    | 32 +++++++++++++++
 4 files changed, 138 insertions(+)

diff --git a/data/edje/include/edje.inc b/data/edje/include/edje.inc
index 98105b6..65227aa 100644
--- a/data/edje/include/edje.inc
+++ b/data/edje/include/edje.inc
@@ -135,6 +135,10 @@ native       set_mouse_events (part_id, ev);
 native       get_mouse_events (part_id);
 native       set_repeat_events(part_id, rep);
 native       get_repeat_events(part_id);
+native       set_ignore_flags (part_id, flags);
+native       get_ignore_flags (part_id);
+native       set_mask_flags   (part_id, flags);
+native       get_mask_flags   (part_id);
 native       part_swallow     (part_id, GROUP:str[]);
 
 native       external_param_get_int(id, param_name[]);
diff --git a/src/lib/edje/edje_embryo.c b/src/lib/edje/edje_embryo.c
index 2b1a666..b272594 100644
--- a/src/lib/edje/edje_embryo.c
+++ b/src/lib/edje/edje_embryo.c
@@ -184,6 +184,10 @@
  * get_mouse_events(part_id)
  * set_repeat_events(part_id, rep)
  * get_repeat_events(part_id)
+ * set_ignore_flags(part_id, flags)
+ * get_ignore_flags(part_id)
+ * set_mask_flags(part_id, flags)
+ * get_mask_flags(part_id)
  * set_clip(part_id, clip_part_id)
  * get_clip(part_id)
  *
@@ -3552,6 +3556,96 @@ _edje_embryo_fn_get_repeat_events(Embryo_Program *ep, 
Embryo_Cell *params)
 
 }
 
+/* set_ignore_flags(part_id, flags) */
+static Embryo_Cell
+_edje_embryo_fn_set_ignore_flags(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_part_ignore_flags_set(ed, rp, params[2]);
+
+   return 0;
+}
+
+/* get_ignore_flags(part_id) */
+static Embryo_Cell
+_edje_embryo_fn_get_ignore_flags(Embryo_Program *ep, Embryo_Cell *params)
+{
+   int part_id = 0;
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   CHKPARAM(1);
+
+   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)
+     return (Embryo_Cell)_edje_var_int_get(ed, 
(int)_edje_part_ignore_flags_get(ed, rp));
+
+   return 0;
+
+}
+
+/* set_mask_flags(part_id, flags) */
+static Embryo_Cell
+_edje_embryo_fn_set_mask_flags(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_part_mask_flags_set(ed, rp, params[2]);
+
+   return 0;
+}
+
+/* get_mask_flags(part_id) */
+static Embryo_Cell
+_edje_embryo_fn_get_mask_flags(Embryo_Program *ep, Embryo_Cell *params)
+{
+   int part_id = 0;
+   Edje *ed;
+   Edje_Real_Part *rp;
+
+   CHKPARAM(1);
+
+   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)
+     return (Embryo_Cell)_edje_var_int_get(ed, 
(int)_edje_part_mask_flags_get(ed, rp));
+
+   return 0;
+
+}
+
 /* part_swallow(part_id, group_name) */
 static Embryo_Cell
 _edje_embryo_fn_part_swallow(Embryo_Program *ep, Embryo_Cell *params)
@@ -4285,6 +4379,10 @@ _edje_embryo_script_init(Edje_Part_Collection *edc)
    embryo_program_native_call_add(ep, "get_mouse_events", 
_edje_embryo_fn_get_mouse_events);
    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);
+   embryo_program_native_call_add(ep, "get_ignore_flags", 
_edje_embryo_fn_get_ignore_flags);
+   embryo_program_native_call_add(ep, "set_mask_flags", 
_edje_embryo_fn_set_mask_flags);
+   embryo_program_native_call_add(ep, "get_mask_flags", 
_edje_embryo_fn_get_mask_flags);
 
    embryo_program_native_call_add(ep, "part_swallow", 
_edje_embryo_fn_part_swallow);
 
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index 5044413..e629923 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -2881,6 +2881,10 @@ Eina_Bool _edje_part_mouse_events_get(Edje *ed, 
Edje_Real_Part *rp);
 void _edje_part_mouse_events_set(Edje *ed, Edje_Real_Part *rp, Eina_Bool 
mouse_events);
 Eina_Bool _edje_part_repeat_events_get(Edje *ed, Edje_Real_Part *rp);
 void _edje_part_repeat_events_set(Edje *ed, Edje_Real_Part *rp, Eina_Bool 
repeat_events);
+Evas_Event_Flags _edje_part_ignore_flags_get(Edje *ed, Edje_Real_Part *rp);
+void _edje_part_ignore_flags_set(Edje *ed, Edje_Real_Part *rp, 
Evas_Event_Flags ignore_flags);
+Evas_Event_Flags _edje_part_mask_flags_get(Edje *ed, Edje_Real_Part *rp);
+void _edje_part_mask_flags_set(Edje *ed, Edje_Real_Part *rp, Evas_Event_Flags 
mask_flags);
 
 #ifdef HAVE_LIBREMIX
 #include <remix/remix.h>
diff --git a/src/lib/edje/edje_util.c b/src/lib/edje/edje_util.c
index c7913ec..c0bb3f5 100644
--- a/src/lib/edje/edje_util.c
+++ b/src/lib/edje/edje_util.c
@@ -5765,4 +5765,36 @@ _edje_part_repeat_events_set(Edje *ed EINA_UNUSED, 
Edje_Real_Part *rp, Eina_Bool
      evas_object_repeat_events_set(rp->object, 0);
 }
 
+Evas_Event_Flags
+_edje_part_ignore_flags_get(Edje *ed EINA_UNUSED, Edje_Real_Part *rp)
+{
+   if (!rp) return EVAS_EVENT_FLAG_NONE;
+
+   return rp->part->ignore_flags;
+}
+
+void
+_edje_part_ignore_flags_set(Edje *ed EINA_UNUSED, Edje_Real_Part *rp, 
Evas_Event_Flags ignore_flags)
+{
+   if (!rp) return;
+
+   rp->part->ignore_flags = ignore_flags;
+}
+
+Evas_Event_Flags
+_edje_part_mask_flags_get(Edje *ed EINA_UNUSED, Edje_Real_Part *rp)
+{
+   if (!rp) return EVAS_EVENT_FLAG_NONE;
+
+   return rp->part->mask_flags;
+}
+
+void
+_edje_part_mask_flags_set(Edje *ed EINA_UNUSED, Edje_Real_Part *rp, 
Evas_Event_Flags mask_flags)
+{
+   if (!rp) return;
+
+   rp->part->mask_flags = mask_flags;
+}
+
 /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/

-- 


Reply via email to