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 :*/ --