diff options
author | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-08-17 19:11:53 +0900 |
---|---|---|
committer | Jean-Philippe Andre <jp.andre@samsung.com> | 2016-08-26 10:18:00 +0900 |
commit | 405680e836eb47d7dd8f59a4761386e7a80d9244 (patch) | |
tree | 27049a6ec8801c5ce2fca6e5f5c1528bf67b3629 | |
parent | 290413543da19c67c8458f61feb38beb0ae373d8 (diff) | |
download | efl-405680e836eb47d7dd8f59a4761386e7a80d9244.tar.gz |
evas events: Switch hold event to new eo type
Evas_Event_Hold is now barely used anywhere.
This also adds support for event_flags to this type.
-rw-r--r-- | src/lib/efl/interfaces/efl_common_internal.h | 1 | ||||
-rw-r--r-- | src/lib/evas/canvas/efl_event_hold.c | 9 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_events.c | 38 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_events_legacy.c | 4 |
4 files changed, 27 insertions, 25 deletions
diff --git a/src/lib/efl/interfaces/efl_common_internal.h b/src/lib/efl/interfaces/efl_common_internal.h index fcae220924..b095b90eaf 100644 --- a/src/lib/efl/interfaces/efl_common_internal.h +++ b/src/lib/efl/interfaces/efl_common_internal.h @@ -95,6 +95,7 @@ struct _Efl_Event_Hold_Data { Eo *eo; double timestamp; + Efl_Event_Flags event_flags; Efl_Input_Device *device; void *data; void *legacy; /* DO NOT TOUCH THIS */ diff --git a/src/lib/evas/canvas/efl_event_hold.c b/src/lib/evas/canvas/efl_event_hold.c index ff30336823..9e51da0e22 100644 --- a/src/lib/evas/canvas/efl_event_hold.c +++ b/src/lib/evas/canvas/efl_event_hold.c @@ -48,16 +48,15 @@ _efl_event_hold_efl_event_timestamp_set(Eo *obj EINA_UNUSED, Efl_Event_Hold_Data } EOLIAN static void -_efl_event_hold_efl_event_input_event_flags_set(Eo *obj EINA_UNUSED, Efl_Event_Hold_Data *pd EINA_UNUSED, Efl_Event_Flags flags EINA_UNUSED) +_efl_event_hold_efl_event_input_event_flags_set(Eo *obj EINA_UNUSED, Efl_Event_Hold_Data *pd, Efl_Event_Flags flags) { - // ignore + pd->event_flags = flags; } EOLIAN static Efl_Event_Flags -_efl_event_hold_efl_event_input_event_flags_get(Eo *obj EINA_UNUSED, Efl_Event_Hold_Data *pd EINA_UNUSED) +_efl_event_hold_efl_event_input_event_flags_get(Eo *obj EINA_UNUSED, Efl_Event_Hold_Data *pd) { - // ignore - return 0; + return pd->event_flags; } EOLIAN static Eo * diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index b3c584504a..acd2b2e161 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -813,14 +813,12 @@ _evas_event_source_mouse_up_events(Evas_Object *eo_obj, Evas *eo_e, } static void -_evas_event_source_hold_events(Evas_Object *eo_obj, Evas *eo_e EINA_UNUSED, void *ev, - int event_id, Efl_Event_Hold *parent_he) +_evas_event_source_hold_events(Evas_Object *eo_obj, int event_id, Efl_Event_Hold *evt) { Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); Evas_Object *eo_src = _evas_object_image_source_get(eo_obj); Evas_Object_Protected_Data *src = efl_data_scope_get(eo_src, EFL_CANVAS_OBJECT_CLASS); Evas_Object_Protected_Data *child; - Efl_Event_Hold *he = NULL; Evas_Object *eo_child; Eina_List *l; @@ -830,11 +828,10 @@ _evas_event_source_hold_events(Evas_Object *eo_obj, Evas *eo_e EINA_UNUSED, void { if (src->delete_me) return; child = efl_data_scope_get(eo_child, EFL_CANVAS_OBJECT_CLASS); - EV_CALL(eo_child, child, EVAS_CALLBACK_HOLD, ev, event_id, he, parent_he); + evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HOLD, NULL, + event_id, EFL_EVENT_HOLD, evt); if (src->layer->evas->delete_me) break; } - - EV_DEL(he); } static void @@ -3131,9 +3128,9 @@ EAPI void evas_event_feed_hold(Eo *eo_e, int hold, unsigned int timestamp, const void *data) { Evas_Public_Data *e = efl_data_scope_get(eo_e, EVAS_CANVAS_CLASS); - Efl_Event_Hold *he = NULL; + Efl_Event_Hold_Data *ev = NULL; + Efl_Event_Hold *evt; Eina_List *l, *copy; - Evas_Event_Hold ev; Evas_Object *eo_obj; int event_id = 0; @@ -3141,14 +3138,16 @@ evas_event_feed_hold(Eo *eo_e, int hold, unsigned int timestamp, const void *dat e->last_timestamp = timestamp; _evas_object_event_new(); - event_id = _evas_event_counter; - ev.hold = hold; - ev.data = (void *)data; - ev.timestamp = timestamp; - ev.event_flags = e->default_event_flags; - ev.dev = _evas_device_top_get(eo_e); - if (ev.dev) efl_ref(ev.dev); + + evt = efl_event_instance_get(EFL_EVENT_HOLD_CLASS, eo_e, &ev); + if (!ev) return; + + ev->hold = !!hold; + ev->data = (void *) data; + ev->timestamp = timestamp; + ev->event_flags = e->default_event_flags; + ev->device = efl_ref(_evas_device_top_get(eo_e)); _evas_walk(e); copy = evas_event_list_copy(e->pointer.object.in); @@ -3157,19 +3156,20 @@ evas_event_feed_hold(Eo *eo_e, int hold, unsigned int timestamp, const void *dat Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS); if ( !evas_event_freezes_through(eo_obj, obj)) { - EV_CALL(eo_obj, obj, EVAS_CALLBACK_HOLD, &ev, event_id, he, NULL); + evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_HOLD, NULL, + event_id, EFL_EVENT_HOLD, evt); if ((obj->proxy->is_proxy) && (obj->proxy->src_events)) - _evas_event_source_hold_events(eo_obj, eo_e, &ev, event_id, he); + _evas_event_source_hold_events(eo_obj, event_id, evt); } if (e->delete_me || e->is_frozen) break; } eina_list_free(copy); _evas_post_event_callback_call(eo_e, e); - if (ev.dev) efl_unref(ev.dev); _evas_unwalk(e); _evas_object_event_new(); - EV_DEL(he); + efl_unref(ev->device); + efl_del(evt); } void diff --git a/src/lib/evas/canvas/evas_events_legacy.c b/src/lib/evas/canvas/evas_events_legacy.c index ff9c01b178..a42ae643fb 100644 --- a/src/lib/evas/canvas/evas_events_legacy.c +++ b/src/lib/evas/canvas/evas_events_legacy.c @@ -543,6 +543,8 @@ efl_event_hold_legacy_info_set(Efl_Event_Hold *evt, const void *event_info, Evas ev->timestamp = e->timestamp; ev->device = e->dev; ev->hold = !!e->hold; + ev->event_flags = e->event_flags; + ev->data = e->data; return EINA_TRUE; } @@ -559,7 +561,7 @@ efl_event_hold_legacy_info_fill(Efl_Event_Hold *evt, Evas_Event_Flags **pflags) e->timestamp = ev->timestamp; e->dev = ev->device; e->hold = ev->hold; - e->event_flags = 0; // FIXME? + e->event_flags = ev->event_flags; if (pflags) *pflags = &e->event_flags; ev->legacy = e; |