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 <cedric@osg.samsung.com>
This commit is contained in:
Jee-Yong Um 2015-07-29 22:29:41 +02:00 committed by Cedric BAIL
parent be33840b6b
commit 815ebc0b0e
4 changed files with 138 additions and 0 deletions

View File

@ -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[]);

View File

@ -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);

View File

@ -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>

View File

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