efl.gfx.entity: combine show/hide events into visibility,changed
Summary: this requires some internal hackery to preserve legacy compatibility and correctly translate the single new event into two legacy events ref T7558 Depends on D8018 Reviewers: segfaultxavi, bu5hm4n Reviewed By: segfaultxavi Subscribers: bu5hm4n, segfaultxavi, cedric, #reviewers, #committers Tags: #efl_api Maniphest Tasks: T7558 Differential Revision: https://phab.enlightenment.org/D8019
This commit is contained in:
parent
d16adf8d82
commit
5da43b2aa7
|
@ -101,8 +101,7 @@ interface @beta Efl.Gfx.Entity {
|
|||
}
|
||||
}
|
||||
events {
|
||||
show: void; [[Object just became visible.]]
|
||||
hide: void; [[Object just became invisible.]]
|
||||
visibility,changed: bool; [[Object's visibility state changed, the event value is the new state.]]
|
||||
position,changed: Eina.Position2D; [[Object was moved, its position during the event is the new one.]]
|
||||
size,changed: Eina.Size2D; [[Object was resized, its size during the event is the new one.]]
|
||||
}
|
||||
|
|
|
@ -258,10 +258,13 @@ _efl_ui_stack_push(Eo *obj, Efl_Ui_Stack_Data *pd, Eo *content)
|
|||
}
|
||||
|
||||
static void
|
||||
_pop_content_hide_cb(void *data, const Efl_Event *event EINA_UNUSED)
|
||||
_pop_content_hide_cb(void *data, const Efl_Event *event)
|
||||
{
|
||||
Content_Data *cd = data;
|
||||
|
||||
/* object is being shown */
|
||||
if (event->info) return;
|
||||
|
||||
cd->popped_hidden = EINA_TRUE;
|
||||
|
||||
_content_data_del(cd);
|
||||
|
@ -297,7 +300,7 @@ _efl_ui_stack_pop(Eo *obj, Efl_Ui_Stack_Data *pd)
|
|||
top_cd->on_popping = EINA_TRUE;
|
||||
|
||||
//Deallocate content data when hide animation is finished.
|
||||
efl_event_callback_add(top_content, EFL_GFX_ENTITY_EVENT_HIDE,
|
||||
efl_event_callback_add(top_content, EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED,
|
||||
_pop_content_hide_cb, top_cd);
|
||||
|
||||
_hide_content_with_anim(obj, pd, top_cd);
|
||||
|
|
|
@ -3908,8 +3908,7 @@ _track_obj_view_del(void *data, const Efl_Event *event);
|
|||
EFL_CALLBACKS_ARRAY_DEFINE(tracker_callbacks,
|
||||
{ EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _track_obj_view_update },
|
||||
{ EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _track_obj_view_update },
|
||||
{ EFL_GFX_ENTITY_EVENT_SHOW, _track_obj_view_update },
|
||||
{ EFL_GFX_ENTITY_EVENT_HIDE, _track_obj_view_update },
|
||||
{ EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, _track_obj_view_update },
|
||||
{ EFL_EVENT_DEL, _track_obj_view_del });
|
||||
|
||||
static void
|
||||
|
@ -5804,8 +5803,7 @@ EFL_CALLBACKS_ARRAY_DEFINE(widget_shadow_cb,
|
|||
{ EFL_GFX_ENTITY_EVENT_POSITION_CHANGED, _widget_shadow_event_cb },
|
||||
{ EFL_GFX_ENTITY_EVENT_SIZE_CHANGED, _widget_shadow_event_cb },
|
||||
{ EFL_GFX_ENTITY_EVENT_STACKING_CHANGED, _widget_shadow_event_cb },
|
||||
{ EFL_GFX_ENTITY_EVENT_HIDE, _widget_shadow_event_cb },
|
||||
{ EFL_GFX_ENTITY_EVENT_SHOW, _widget_shadow_event_cb })
|
||||
{ EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, _widget_shadow_event_cb });
|
||||
|
||||
static Widget_Shadow *
|
||||
_widget_shadow_part_get(const Eo *part_obj)
|
||||
|
|
|
@ -348,7 +348,7 @@ evas_event_callback_call(Evas *eo_e, Evas_Callback_Type type, void *event_info)
|
|||
}
|
||||
|
||||
static void
|
||||
_evas_callback_legacy_smart_compatibility_do_it(Evas_Object *eo_obj, const Efl_Event_Description *efl_event_desc)
|
||||
_evas_callback_legacy_smart_compatibility_do_it(Evas_Object *eo_obj, const Efl_Event_Description *efl_event_desc, void *event_info)
|
||||
{
|
||||
if (efl_event_desc == EFL_GFX_ENTITY_EVENT_POSITION_CHANGED)
|
||||
evas_object_smart_callback_call(eo_obj, "move", NULL);
|
||||
|
@ -356,6 +356,9 @@ _evas_callback_legacy_smart_compatibility_do_it(Evas_Object *eo_obj, const Efl_E
|
|||
evas_object_smart_callback_call(eo_obj, "resize", NULL);
|
||||
else if (efl_event_desc == EFL_GFX_ENTITY_EVENT_STACKING_CHANGED)
|
||||
evas_object_smart_callback_call(eo_obj, "restack", NULL);
|
||||
/* this is inverted: the base call is the legacy compat and this is the new event */
|
||||
else if ((efl_event_desc == EFL_GFX_ENTITY_EVENT_SHOW) || (efl_event_desc == EFL_GFX_ENTITY_EVENT_HIDE))
|
||||
efl_event_callback_call(eo_obj, EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, event_info);
|
||||
}
|
||||
|
||||
|
||||
|
@ -422,7 +425,7 @@ evas_object_event_callback_call(Evas_Object *eo_obj, Evas_Object_Protected_Data
|
|||
e->current_event = type;
|
||||
|
||||
efl_event_callback_legacy_call(eo_obj, efl_event_desc, event_info);
|
||||
_evas_callback_legacy_smart_compatibility_do_it(eo_obj, efl_event_desc);
|
||||
_evas_callback_legacy_smart_compatibility_do_it(eo_obj, efl_event_desc, event_info);
|
||||
|
||||
/* multi events with finger 0 - only for eo callbacks */
|
||||
if (type == EVAS_CALLBACK_MOUSE_DOWN)
|
||||
|
|
|
@ -3,14 +3,10 @@
|
|||
#include "evas_private.h"
|
||||
|
||||
/* BEGIN: events to maintain compatibility with legacy */
|
||||
EWAPI const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_MOVE =
|
||||
EFL_EVENT_DESCRIPTION("move");
|
||||
EWAPI const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_RESIZE =
|
||||
EFL_EVENT_DESCRIPTION("resize");
|
||||
EWAPI extern const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_MOVE;
|
||||
#define EFL_GFX_ENTITY_EVENT_MOVE (&(_EFL_GFX_ENTITY_EVENT_MOVE))
|
||||
EWAPI extern const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_RESIZE;
|
||||
#define EFL_GFX_ENTITY_EVENT_RESIZE (&(_EFL_GFX_ENTITY_EVENT_RESIZE))
|
||||
EWAPI const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_SHOW =
|
||||
EFL_EVENT_DESCRIPTION("show");
|
||||
EWAPI const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_HIDE =
|
||||
EFL_EVENT_DESCRIPTION("hide");
|
||||
/* END: events to maintain compatibility with legacy */
|
||||
|
||||
/* local calls */
|
||||
|
@ -20,7 +16,7 @@ evas_object_inform_call_show(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
|
|||
{
|
||||
int event_id = _evas_object_event_new();
|
||||
|
||||
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_SHOW, NULL, event_id, EFL_GFX_ENTITY_EVENT_SHOW);
|
||||
evas_object_event_callback_call(eo_obj, obj, EVAS_CALLBACK_SHOW, (void*)1, event_id, EFL_GFX_ENTITY_EVENT_SHOW);
|
||||
_evas_post_event_callback_call(obj->layer->evas->evas, obj->layer->evas, event_id);
|
||||
}
|
||||
|
||||
|
|
|
@ -1928,6 +1928,13 @@ extern Eina_Cow *evas_object_events_cow;
|
|||
} \
|
||||
while (0);
|
||||
|
||||
/* BEGIN: events to maintain compatibility with legacy */
|
||||
EWAPI extern const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_SHOW;
|
||||
#define EFL_GFX_ENTITY_EVENT_SHOW (&(_EFL_GFX_ENTITY_EVENT_SHOW))
|
||||
EWAPI extern const Efl_Event_Description _EFL_GFX_ENTITY_EVENT_HIDE;
|
||||
#define EFL_GFX_ENTITY_EVENT_HIDE (&(_EFL_GFX_ENTITY_EVENT_HIDE))
|
||||
/* END: events to maintain compatibility with legacy */
|
||||
|
||||
/****************************************************************************/
|
||||
/*****************************************/
|
||||
/********************/
|
||||
|
|
|
@ -159,16 +159,15 @@ _win_hide(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj, void *e
|
|||
}
|
||||
|
||||
static void
|
||||
_ui_win_show(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
_ui_win_visibility_change(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
_win_show(NULL, NULL, ev->object, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
_ui_win_hide(void *data EINA_UNUSED, const Efl_Event *ev)
|
||||
{
|
||||
_win_hide(NULL, NULL, ev->object, NULL);
|
||||
efl_key_data_set(ev->object, "timer", NULL);
|
||||
if (ev->info)
|
||||
_win_show(NULL, NULL, ev->object, NULL);
|
||||
else
|
||||
{
|
||||
_win_hide(NULL, NULL, ev->object, NULL);
|
||||
efl_key_data_set(ev->object, "timer", NULL);
|
||||
}
|
||||
}
|
||||
|
||||
EFL_CLASS_SIMPLE_CLASS(efl_loop, "Efl.Loop", EFL_LOOP_CLASS)
|
||||
|
@ -201,8 +200,7 @@ _elm_suite_win_create()
|
|||
}
|
||||
else
|
||||
{
|
||||
efl_event_callback_add(win, EFL_GFX_ENTITY_EVENT_SHOW, _ui_win_show, NULL);
|
||||
efl_event_callback_add(win, EFL_GFX_ENTITY_EVENT_HIDE, _ui_win_hide, NULL);
|
||||
efl_event_callback_add(win, EFL_GFX_ENTITY_EVENT_VISIBILITY_CHANGED, _ui_win_visibility_change, NULL);
|
||||
}
|
||||
return win;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue