Most of classes implements Efl.Container.content_remove are just calling "unpack"
except of "Efl.Canvas.Layout" and "Efl.Ui.Layout".
This patch remove the asymmetrical API and add content_remove API of
"Efl.Canvas.Layout" and "Efl.Ui.Layout" that child can be remove without efl_part
APIs.
ref T7576
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D7913
return _edje_part_box_content_at(pd->ed, pd->part, index);
}
-EOLIAN static Eina_Bool
-_efl_canvas_layout_part_box_efl_container_content_remove(Eo *obj, void *_pd EINA_UNUSED, Efl_Gfx_Entity *subobj)
-{
- return efl_pack_unpack(obj, subobj);
-}
-
EOLIAN static int
_efl_canvas_layout_part_box_efl_pack_linear_pack_index_get(Eo *obj, void *_pd EINA_UNUSED, const Efl_Gfx_Entity * subobj)
{
EDJE_PART_INVALID_VOID(efl_text_markup_interactive_cursor_markup_insert, _efl_canvas_layout_part_invalid_efl_text_markup_interactive_cursor_markup_insert, Efl_Text_Cursor_Cursor *cur, const char *markup)
EDJE_PART_INVALID(Eina_Iterator *, 0, efl_content_iterate, _efl_canvas_layout_part_invalid_efl_container_content_iterate)
EDJE_PART_INVALID(int, 0, efl_content_count, _efl_canvas_layout_part_invalid_efl_container_content_count)
-EDJE_PART_INVALID(Eina_Bool, 0, efl_content_remove, _efl_canvas_layout_part_invalid_efl_container_content_remove, Efl_Gfx_Entity *content)
EDJE_PART_INVALID(Eina_Bool, 0, efl_pack_clear, _efl_canvas_layout_part_invalid_efl_pack_pack_clear)
EDJE_PART_INVALID(Eina_Bool, 0, efl_pack_unpack_all, _efl_canvas_layout_part_invalid_efl_pack_unpack_all)
EDJE_PART_INVALID(Eina_Bool, 0, efl_pack_unpack, _efl_canvas_layout_part_invalid_efl_pack_unpack, Efl_Gfx_Entity *subobj)
PROXY_DATA_GET(obj, pd);
Efl_Gfx_Entity *content = _edje_efl_content_content_get(pd->ed, pd->part);
if (!content) return NULL;
- efl_content_remove(obj, content);
+ efl_canvas_layout_content_remove(obj, content);
return content;
}
}
EOLIAN static Eina_Bool
-_efl_canvas_layout_part_table_efl_container_content_remove(Eo *obj EINA_UNUSED, void *_pd EINA_UNUSED EINA_UNUSED, Efl_Gfx_Entity *content)
-{
- return efl_pack_unpack(obj, content);
-}
-
-EOLIAN static Eina_Bool
_efl_canvas_layout_part_table_efl_pack_pack_clear(Eo *obj, void *_pd EINA_UNUSED)
{
PROXY_DATA_GET(obj, pd);
}
EOLIAN Eina_Bool
-_efl_canvas_layout_efl_container_content_remove(Eo *obj EINA_UNUSED, Edje *ed, Evas_Object *obj_swallow)
+_efl_canvas_layout_content_remove(Eo *obj EINA_UNUSED, Edje *ed, Evas_Object *obj_swallow)
{
Edje_Real_Part *rp;
Edje_User_Defined *eud;
EAPI void
edje_object_part_unswallow(Edje_Object *obj, Evas_Object *obj_swallow)
{
- efl_content_remove(obj, obj_swallow);
+ efl_canvas_layout_content_remove(obj, obj_swallow);
}
EAPI Evas_Object *
error: Efl.Gfx.Image_Load_Error(Efl.Gfx.Image_Load_Error.none); [[The load error code.]]
}
}
+ content_remove {
+ [[Unswallow an object from this Edje.]]
+ params {
+ @in content: Efl.Gfx.Entity; [[To be removed content.]]
+ }
+ return: bool; [[$false if $content was not a child or can not be removed.]]
+ }
/***********************************************************************************
* TIZEN_ONLY_FEATURE: API for handling text properties of Edje *
Efl.Ui.I18n.language { set; get; }
Efl.Gfx.Entity.scale { set; get; }
Efl.File.load;
- Efl.Container.content_remove;
Efl.Container.content_iterate;
Efl.Container.content_count;
Efl.Part.part_get; [[Returns @Efl.Canvas.Layout_Part]]
implements {
Efl.Container.content_iterate;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Pack.pack_clear;
Efl.Pack.unpack_all;
Efl.Pack.unpack;
// Efl.Canvas.Layout_Part_Box
Efl.Container.content_iterate;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Pack.pack_clear;
Efl.Pack.unpack_all;
Efl.Pack.unpack;
implements {
Efl.Container.content_iterate;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Pack.pack_clear;
Efl.Pack.unpack_all;
Efl.Pack.unpack;
eo_prefix: efl_content;
event_prefix: efl_container;
methods {
- content_remove {
- [[Unswallow an object from this container.]]
- params {
- @in content: Efl.Gfx.Entity; [[To be removed content]]
- }
- return: bool; [[$false if $content was not a child or can not be removed.]]
- }
content_iterate {
[[Begin iterating over this object's contents.]]
return: iterator<Efl.Gfx.Entity> @owned @warn_unused; [[Iterator to object content]]
}
EOLIAN static Eina_Bool
-_efl_ui_box_efl_container_content_remove(Eo *obj EINA_UNUSED, Efl_Ui_Box_Data *pd EINA_UNUSED, Efl_Gfx_Entity *content)
-{
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, 0);
-
- return evas_object_box_remove(wd->resize_obj, content);
-}
-
-EOLIAN static Eina_Bool
_efl_ui_box_efl_pack_pack_clear(Eo *obj, Efl_Ui_Box_Data *pd)
{
Eina_Bool ret;
implements {
Efl.Object.constructor;
Efl.Canvas.Group.group_calculate;
- Efl.Container.content_remove;
Efl.Container.content_iterate;
Efl.Container.content_count;
Efl.Ui.Direction.direction { get; set; }
}
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;
-}
-
-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);
Efl.Ui.Widget.widget_sub_object_del;
Efl.Container.content_iterate;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Part.part_get;
Efl.Pack.unpack;
Efl.Pack.pack;
return NULL;
}
-EOLIAN static Eina_Bool
-_efl_ui_layout_base_efl_container_content_remove(Eo *obj, Efl_Ui_Layout_Data *sd EINA_UNUSED,
- Efl_Gfx_Entity *content)
-{
- ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE);
-
- if (!_elm_widget_sub_object_redirect_to_top(obj, content))
- {
- ERR("could not remove sub object %p from %p", content, obj);
- return EINA_FALSE;
- }
- edje_object_part_unswallow(wd->resize_obj, content);
- _eo_unparent_helper(content, obj);
-
- return EINA_TRUE;
-}
-
/* legacy only - eo is iterator */
EAPI Eina_List *
elm_layout_content_swallow_list_get(const Evas_Object *obj)
Efl.Ui.Widget.widget_sub_object_del;
Efl.Ui.Focus.Object.on_focus_update;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Container.content_iterate;
Efl.Part.part_get;
Efl.Ui.View.model { get; set; }
}
EOLIAN static Eina_Bool
-_efl_ui_layout_part_box_efl_container_content_remove(Eo *obj, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx_Entity *content)
-{
- // alias for efl_pack_unpack
- return _efl_ui_layout_part_box_efl_pack_unpack(obj, pd, content);
-}
-
-EOLIAN static Eina_Bool
_efl_ui_layout_part_box_efl_pack_pack(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Box_Data *pd, Efl_Gfx_Entity *subobj)
{
return _efl_ui_layout_box_append(pd->obj, pd->sd, pd->part, subobj);
}
EOLIAN static Eina_Bool
-_efl_ui_layout_part_table_efl_container_content_remove(Eo *obj, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity *content)
-{
- // alias for efl_pack_unpack
- return _efl_ui_layout_part_table_efl_pack_unpack(obj, pd, content);
-}
-
-EOLIAN static Eina_Bool
_efl_ui_layout_part_table_efl_pack_table_pack_table(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Table_Data *pd, Efl_Gfx_Entity *subobj, int col, int row, int colspan, int rowspan)
{
return _efl_ui_layout_table_pack(pd->obj, pd->sd, pd->part, subobj, col, row, colspan, rowspan);
Efl.Object.destructor;
Efl.Container.content_iterate;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Ui.Direction.direction { get; }
Efl.Pack.pack_clear;
Efl.Pack.unpack_all;
Efl.Object.destructor;
Efl.Container.content_iterate;
Efl.Container.content_count;
- Efl.Container.content_remove;
Efl.Pack.pack_clear;
Efl.Pack.unpack_all;
Efl.Pack.unpack;
return pd->count;
}
-EOLIAN static Eina_Bool
-_efl_ui_table_efl_container_content_remove(Eo *obj, Efl_Ui_Table_Data *pd EINA_UNUSED, Efl_Gfx_Entity *content)
-{
- return efl_pack_unpack(obj, content);
-}
-
-
EOLIAN static Eina_Iterator *
_efl_ui_table_efl_pack_table_table_contents_get(Eo *obj, Efl_Ui_Table_Data *pd EINA_UNUSED,
int col, int row, Eina_Bool below)
Efl.Object.constructor;
Efl.Canvas.Group.group_calculate;
Efl.Ui.Widget.theme_apply;
- Efl.Container.content_remove;
Efl.Container.content_iterate;
Efl.Container.content_count;
Efl.Ui.Direction.direction { get; set; }
fail_if(i != 3);
eina_iterator_free(it);
- fail_if(!efl_content_remove(efl_part(obj, "box"), sobjs[0]));
+ fail_if(!efl_pack_unpack(efl_part(obj, "box"), sobjs[0]));
fail_if(efl_content_count(efl_part(obj, "box")) != 2);
fail_if(!efl_pack_unpack_at(efl_part(obj, "box"), 1));
fail_if(efl_content_count(efl_part(obj, "box")) != 1);
fail_if(!efl_content_set(efl_part(ly, "swallow"), o1));
ck_assert_ptr_eq(efl_parent_get(o1), ly);
- efl_content_remove(ly, o1);
+ efl_canvas_layout_content_remove(ly, o1);
ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1));
fail_if(!efl_content_set(efl_part(ly, "swallow"), o1));