efl_ui_tab_pager: remove the setter for tab_bar
authorMarcel Hollerbach <mail@marcel-hollerbach.de>
Fri, 23 Aug 2019 17:16:56 +0000 (19:16 +0200)
committerYeongjong Lee <yj34.lee@samsung.com>
Mon, 16 Sep 2019 01:23:00 +0000 (10:23 +0900)
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 <woohyun0705@gmail.com>
Differential Revision: https://phab.enlightenment.org/D9731

src/bin/elementary/test_ui_tab_pager.c
src/lib/elementary/efl_ui_tab_bar.eo
src/lib/elementary/efl_ui_tab_pager.c
src/lib/elementary/efl_ui_tab_pager.eo
src/tests/elementary/spec/efl_test_single_selectable.c

index 3f91819..af4100d 100644 (file)
@@ -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;
 
index eff7281..1d27afe 100644 (file)
@@ -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;
    }
 }
index b7299fc..bfc22d8 100644 (file)
@@ -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)
 {
index 79eaede..ac25bec 100644 (file)
@@ -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
index 5ec40b2..6639cc9 100644 (file)
@@ -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"
         }
       }