forked from enlightenment/efl
efl_ui_tab_page: implement content_set / unset correctly
This patchset ensures that the following features are supported: - content-widget deletion on set content - content-widget validation on set calls - invalid cases return false - event emission Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Differential Revision: https://phab.enlightenment.org/D8681
This commit is contained in:
parent
f9143ec634
commit
7ee0a3e055
|
@ -11,24 +11,44 @@
|
|||
|
||||
#define MY_CLASS EFL_UI_TAB_PAGE_CLASS
|
||||
|
||||
static void
|
||||
_invalidate_cb(void *data, const Efl_Event *ev EINA_UNUSED)
|
||||
{
|
||||
efl_content_unset(data);
|
||||
}
|
||||
|
||||
EOLIAN static Eina_Bool
|
||||
_efl_ui_tab_page_efl_content_content_set(Eo *obj, Efl_Ui_Tab_Page_Data *sd, Eo *content)
|
||||
{
|
||||
if (sd->content)
|
||||
{
|
||||
efl_content_unset(efl_part(obj, "efl.content"));
|
||||
efl_event_callback_del(sd->content, EFL_EVENT_INVALIDATE, _invalidate_cb, obj);
|
||||
efl_del(sd->content);
|
||||
sd->content = NULL;
|
||||
}
|
||||
|
||||
if (content && !efl_ui_widget_sub_object_add(obj, content))
|
||||
{
|
||||
efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL);
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
sd->content = content;
|
||||
efl_event_callback_add(sd->content, EFL_EVENT_INVALIDATE, _invalidate_cb, obj);
|
||||
efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, content);
|
||||
|
||||
efl_content_set(efl_part(obj, "efl.content"), sd->content);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EOLIAN static Efl_Gfx_Entity*
|
||||
_efl_ui_tab_page_efl_content_content_unset(Eo *obj, Efl_Ui_Tab_Page_Data *pd EINA_UNUSED)
|
||||
_efl_ui_tab_page_efl_content_content_unset(Eo *obj, Efl_Ui_Tab_Page_Data *pd)
|
||||
{
|
||||
efl_event_callback_del(pd->content, EFL_EVENT_INVALIDATE, _invalidate_cb, obj);
|
||||
pd->content = NULL;
|
||||
efl_event_callback_call(obj, EFL_CONTENT_EVENT_CONTENT_CHANGED, NULL);
|
||||
return efl_content_unset(efl_part(obj, "efl.content"));
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ tests = [
|
|||
["Efl.Content" , "Efl.Ui.Button", "Efl.Ui.Frame", "Efl.Ui.Grid_Default_Item",
|
||||
"Efl.Ui.List_Default_Item", "Efl.Ui.List_Empty_Item",
|
||||
"Efl.Ui.Navigation_Layout", "Efl.Ui.Panel", "Efl.Ui.Progressbar",
|
||||
"Efl.Ui.Radio", "Efl.Ui.Popup"]
|
||||
"Efl.Ui.Radio", "Efl.Ui.Popup", "Efl.Ui.Tab_Page"]
|
||||
]
|
||||
|
||||
fixture_gen_template = """
|
||||
|
|
Loading…
Reference in New Issue