From f1f3607f8c8da629ebf08dbc9f86f78c82a892e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Philippe=20Andr=C3=A9?= Date: Tue, 27 Nov 2018 10:09:06 +0000 Subject: [PATCH] ui/flip: fix efl_pack usage Objects packed would end up invisible as they were not marked as "_elm_leaveme". I also added some list safety code but I think the entire pack API on flip is very much untested and unstable. @fix Reviewed-by: Cedric BAIL Reviewed-by: Xavi Artigas Differential Revision: https://phab.enlightenment.org/D7367 --- src/lib/elementary/efl_ui_flip.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/lib/elementary/efl_ui_flip.c b/src/lib/elementary/efl_ui_flip.c index 24004012e0..7f3238e9bf 100644 --- a/src/lib/elementary/efl_ui_flip.c +++ b/src/lib/elementary/efl_ui_flip.c @@ -2137,7 +2137,7 @@ _update_front_back(Eo *obj, Efl_Ui_Flip_Data *pd) static void _content_added(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *content) { - evas_object_smart_member_add(content, obj); + elm_widget_sub_object_add(obj, content); if (!pd->front.content) { @@ -2158,7 +2158,7 @@ _content_removed(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *content) int index, count; Eina_Bool state; - evas_object_smart_member_del(content); + elm_widget_sub_object_del(obj, content); // if its not the front or back object just return. if ((pd->front.content != content) || (pd->back.content != content)) @@ -2212,6 +2212,7 @@ _efl_ui_flip_efl_container_content_count(Eo *obj EINA_UNUSED, Efl_Ui_Flip_Data * EOLIAN static Eina_Bool _efl_ui_flip_efl_container_content_remove(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *content) { + pd->content_list = eina_list_remove(pd->content_list, content); pd->content_list = eina_list_remove(pd->content_list, content); _content_removed(obj, pd, content); return EINA_TRUE; @@ -2220,6 +2221,7 @@ _efl_ui_flip_efl_container_content_remove(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx EOLIAN static Eina_Bool _efl_ui_flip_efl_pack_unpack(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj) { + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_remove(pd->content_list, subobj); _content_removed(obj, pd, subobj); return EINA_TRUE; @@ -2228,6 +2230,7 @@ _efl_ui_flip_efl_pack_unpack(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subo EOLIAN static Eina_Bool _efl_ui_flip_efl_pack_pack(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj) { + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_append(pd->content_list, subobj); _content_added(obj, pd, subobj); return EINA_TRUE; @@ -2236,6 +2239,7 @@ _efl_ui_flip_efl_pack_pack(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj EOLIAN static Eina_Bool _efl_ui_flip_efl_pack_linear_pack_begin(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj) { + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_prepend(pd->content_list, subobj); _content_added(obj, pd, subobj); @@ -2245,6 +2249,7 @@ _efl_ui_flip_efl_pack_linear_pack_begin(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_E EOLIAN static Eina_Bool _efl_ui_flip_efl_pack_linear_pack_end(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj) { + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_append(pd->content_list, subobj); _content_added(obj, pd, subobj); return EINA_TRUE; @@ -2253,6 +2258,7 @@ _efl_ui_flip_efl_pack_linear_pack_end(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Ent EOLIAN static Eina_Bool _efl_ui_flip_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing) { + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing); _content_added(obj, pd, subobj); return EINA_TRUE; @@ -2261,6 +2267,7 @@ _efl_ui_flip_efl_pack_linear_pack_before(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_ EOLIAN static Eina_Bool _efl_ui_flip_efl_pack_linear_pack_after(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Entity *subobj, const Efl_Gfx_Entity *existing) { + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_append_relative(pd->content_list, subobj, existing); _content_added(obj, pd, subobj); return EINA_TRUE; @@ -2271,6 +2278,7 @@ _efl_ui_flip_efl_pack_linear_pack_at(Eo *obj, Efl_Ui_Flip_Data *pd, Efl_Gfx_Enti { Efl_Gfx_Entity *existing = NULL; existing = eina_list_nth(pd->content_list, index); + pd->content_list = eina_list_remove(pd->content_list, subobj); pd->content_list = eina_list_prepend_relative(pd->content_list, subobj, existing); _content_added(obj, pd, subobj); return EINA_TRUE;