forked from enlightenment/efl
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.
This commit is contained in:
parent
290413543d
commit
405680e836
|
@ -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 */
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue