From 3cc427234ef0d05507da6f3259fc11b4f7b02249 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 +++ .../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 e23166d1cf..93aaa12948 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 eff7281e22..1d27afe62e 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 b7299fce92..bfc22d8e1c 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 79eaede7b5..ac25becc58 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 5ec40b2747..6639cc9c66 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" } }