From a3db7280c20a46563fb949465f5bdc7dff8c1d2a Mon Sep 17 00:00:00 2001 From: Marcel Hollerbach Date: Fri, 23 Aug 2019 19:16:56 +0200 Subject: [PATCH] efl_ui_tab_pager: remove the setter for tab_bar the setter of the tab_bar here is quite useless. If you set it after something else was set, the item situation is not clear anymore, there is more in the spotlight than in the bar. You cannot use the widget without tab bar. So the logical consequence for me was that the pager create the tab bar by itself, and you can just access it via a getter. Reviewed-by: WooHyun Jung Differential Revision: https://phab.enlightenment.org/D9731 --- src/bin/elementary/test_ui_tab_pager.c | 5 +--- src/lib/elementary/efl_ui_tab_bar.eo | 1 - src/lib/elementary/efl_ui_tab_pager.c | 29 +++++++++------------- src/lib/elementary/efl_ui_tab_pager.eo | 4 +++ .../elementary/spec/efl_test_single_selectable.c | 5 ++-- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/bin/elementary/test_ui_tab_pager.c b/src/bin/elementary/test_ui_tab_pager.c index 3f91819..af4100d 100644 --- a/src/bin/elementary/test_ui_tab_pager.c +++ b/src/bin/elementary/test_ui_tab_pager.c @@ -97,7 +97,7 @@ tab_page_add(Eo *parent) void test_ui_tab_pager(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Eo *win, *layout, *navi, *list, *tp, *tb, *page; + Eo *win, *layout, *navi, *list, *tp, *page; //Efl_Page_Transition *tran; App_Data *ad = NULL; char buf[PATH_MAX]; @@ -132,9 +132,6 @@ test_ui_tab_pager(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *ev efl_gfx_hint_fill_set(efl_added, EINA_TRUE, EINA_TRUE), efl_content_set(efl_part(layout, "tab_pager"), efl_added)); - tb = efl_add(EFL_UI_TAB_BAR_CLASS, tp); - efl_ui_tab_pager_tab_bar_set(tp, tb); - tab_label_count = 0; tab_icon_count = 0; diff --git a/src/lib/elementary/efl_ui_tab_bar.eo b/src/lib/elementary/efl_ui_tab_bar.eo index eff7281..1d27afe 100644 --- a/src/lib/elementary/efl_ui_tab_bar.eo +++ b/src/lib/elementary/efl_ui_tab_bar.eo @@ -27,6 +27,5 @@ class @beta Efl.Ui.Tab_Bar extends Efl.Ui.Layout_Base implements Efl.Ui.Single_S Efl.Pack_Linear; Efl.Pack; Efl.Pack_Linear; - Efl.Container; } } diff --git a/src/lib/elementary/efl_ui_tab_pager.c b/src/lib/elementary/efl_ui_tab_pager.c index b7299fc..bfc22d8 100644 --- a/src/lib/elementary/efl_ui_tab_pager.c +++ b/src/lib/elementary/efl_ui_tab_pager.c @@ -45,22 +45,6 @@ _tab_select_cb(void *data, const Efl_Event *event) } } -EOLIAN static void -_efl_ui_tab_pager_tab_bar_set(Eo *obj, Efl_Ui_Tab_Pager_Data *sd, Efl_Canvas_Object *tab_bar) -{ - if (sd->tab_bar != NULL) - { - efl_event_callback_del(sd->tab_bar, EFL_UI_EVENT_ITEM_SELECTED, _tab_select_cb, obj); - efl_content_unset(efl_part(obj, "efl.tab_root")); - efl_del(sd->tab_bar); - } - - sd->tab_bar = tab_bar; - efl_content_set(efl_part(obj, "efl.tab_root"), sd->tab_bar); - - efl_event_callback_add(sd->tab_bar, EFL_UI_EVENT_ITEM_SELECTED, _tab_select_cb, obj); -} - EOLIAN static Efl_Canvas_Object * _efl_ui_tab_pager_tab_bar_get(const Eo *obj EINA_UNUSED, Efl_Ui_Tab_Pager_Data *sd) { @@ -93,13 +77,24 @@ _efl_ui_tab_pager_efl_object_constructor(Eo *obj, Efl_Ui_Tab_Pager_Data *sd) efl_ui_widget_focus_allow_set(obj, EINA_TRUE); - sd->tab_bar = NULL; + sd->tab_bar = efl_add(EFL_UI_TAB_BAR_CLASS, obj); + efl_event_callback_add(sd->tab_bar, EFL_UI_EVENT_ITEM_SELECTED, _tab_select_cb, obj); sd->cur = 0; sd->cnt = 0; return obj; } +EOLIAN static Efl_Object* +_efl_ui_tab_pager_efl_object_finalize(Eo *obj, Efl_Ui_Tab_Pager_Data *pd) +{ + obj = efl_finalize(efl_super(obj, MY_CLASS)); + + efl_content_set(efl_part(obj, "efl.tab_root"), pd->tab_bar); + + return obj; +} + EOLIAN static int _efl_ui_tab_pager_efl_container_content_count(Eo *obj EINA_UNUSED, Efl_Ui_Tab_Pager_Data *sd) { diff --git a/src/lib/elementary/efl_ui_tab_pager.eo b/src/lib/elementary/efl_ui_tab_pager.eo index 79eaede..ac25bec 100644 --- a/src/lib/elementary/efl_ui_tab_pager.eo +++ b/src/lib/elementary/efl_ui_tab_pager.eo @@ -3,6 +3,9 @@ class @beta Efl.Ui.Tab_Pager extends Efl.Ui.Spotlight.Container [[Tab Pager class]] methods { @property tab_bar { + get { + + } values { tab_bar: Efl.Canvas.Object; } @@ -11,6 +14,7 @@ class @beta Efl.Ui.Tab_Pager extends Efl.Ui.Spotlight.Container implements { Efl.Object.constructor; Efl.Object.destructor; + Efl.Object.finalize; Efl.Container.content_count; Efl.Pack.pack_clear; // TODO Efl.Pack.unpack_all; // TODO diff --git a/src/tests/elementary/spec/efl_test_single_selectable.c b/src/tests/elementary/spec/efl_test_single_selectable.c index 5ec40b2..6639cc9 100644 --- a/src/tests/elementary/spec/efl_test_single_selectable.c +++ b/src/tests/elementary/spec/efl_test_single_selectable.c @@ -8,11 +8,12 @@ /* spec-meta-start {"test-interface":"Efl.Ui.Single_Selectable", - "test-widgets": ["Efl.Ui.Grid", "Efl.Ui.List", "Efl.Ui.Radio_Box"], + "test-widgets": ["Efl.Ui.Grid", "Efl.Ui.List", "Efl.Ui.Radio_Box", "Efl.Ui.Tab_Bar"], "custom-mapping" : { "Efl.Ui.Grid" : "EFL_UI_GRID_DEFAULT_ITEM_CLASS", "Efl.Ui.List" : "EFL_UI_LIST_DEFAULT_ITEM_CLASS", - "Efl.Ui.Radio_Box" : "EFL_UI_RADIO_CLASS" + "Efl.Ui.Radio_Box" : "EFL_UI_RADIO_CLASS", + "Efl.Ui.Tab_Bar" : "EFL_UI_TAB_BAR_DEFAULT_ITEM_CLASS" } } -- 2.7.4