summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2017-06-09 20:16:08 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2017-06-09 20:06:48 -0400
commit4c431c8b9ccf9b5916ff7f21a1ec2399e09b3979 (patch)
tree5fa0ba33563b634f5d6248f798a777602d49e5c0
parent7fafbdee28e2255b67b84995f10383073018bb43 (diff)
downloadefl-4c431c8b9ccf9b5916ff7f21a1ec2399e09b3979.tar.gz
edje: add set_pointer_mode() to embryo functions
this should probably be a description-level property
-rw-r--r--data/edje/include/edje.inc1
-rw-r--r--src/lib/edje/edje_embryo.c31
-rw-r--r--src/lib/edje/edje_private.h2
-rw-r--r--src/lib/edje/edje_util.c10
4 files changed, 44 insertions, 0 deletions
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)
{