edje: add set_pointer_mode() to embryo functions

this should probably be a description-level property
This commit is contained in:
Mike Blumenkrantz 2017-06-09 20:16:08 -04:00
parent 7fafbdee28
commit 4c431c8b9c
4 changed files with 44 additions and 0 deletions

View File

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

View File

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

View File

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

View File

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