From 0c0230331ae30adfe6991a7f95b8b14aeff2251e Mon Sep 17 00:00:00 2001 From: Ryuan Choi Date: Thu, 16 Jan 2014 04:02:11 +0900 Subject: [PATCH] panel: Delay elm_layout_theme_set until memebers are initialized in _smart_add elm_layout_theme_set can call some methods like _elm_panel_smart_theme and there are some warnings when these methods manipulate some member variabls which are not initialized yet. It's because elm_layout_theme_set is called too early in _smart_add. Spotted while digging warnings after rELM4c3e23de9e46 --- legacy/elementary/src/lib/elm_panel.c | 32 +++++++++++++++------------ 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/legacy/elementary/src/lib/elm_panel.c b/legacy/elementary/src/lib/elm_panel.c index 82b2cacee8..e856a94976 100644 --- a/legacy/elementary/src/lib/elm_panel.c +++ b/legacy/elementary/src/lib/elm_panel.c @@ -359,16 +359,11 @@ _elm_panel_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) elm_widget_sub_object_parent_add(obj); elm_widget_can_focus_set(obj, EINA_TRUE); - /* just to bootstrap and have theme hook to work */ - if (!elm_layout_theme_set(obj, "panel", "top", elm_widget_style_get(obj))) - CRI("Failed to set layout!"); - eo_do(obj, elm_wdg_theme(NULL)); priv->bx = evas_object_box_add(evas_object_evas_get(obj)); evas_object_size_hint_align_set(priv->bx, 0.5, 0.5); evas_object_box_layout_set(priv->bx, _box_layout_cb, priv, NULL); - elm_layout_content_set(obj, "elm.swallow.content", priv->bx); evas_object_show(priv->bx); elm_layout_signal_callback_add @@ -379,17 +374,26 @@ _elm_panel_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) priv->event = evas_object_rectangle_add(evas_object_evas_get(obj)); evas_object_color_set(priv->event, 0, 0, 0, 0); evas_object_pass_events_set(priv->event, EINA_TRUE); - if (edje_object_part_exists - (wd->resize_obj, "elm.swallow.event")) - { - Evas_Coord minw = 0, minh = 0; - - elm_coords_finger_size_adjust(1, &minw, 1, &minh); - evas_object_size_hint_min_set(priv->event, minw, minh); - elm_layout_content_set(obj, "elm.swallow.event", priv->event); - } elm_widget_sub_object_add(obj, priv->event); + /* just to bootstrap and have theme hook to work */ + if (!elm_layout_theme_set(obj, "panel", "top", elm_widget_style_get(obj))) + CRI("Failed to set layout!"); + else + { + elm_layout_content_set(obj, "elm.swallow.content", priv->bx); + + if (edje_object_part_exists + (wd->resize_obj, "elm.swallow.event")) + { + Evas_Coord minw = 0, minh = 0; + + elm_coords_finger_size_adjust(1, &minw, 1, &minh); + evas_object_size_hint_min_set(priv->event, minw, minh); + elm_layout_content_set(obj, "elm.swallow.event", priv->event); + } + } + elm_layout_sizing_eval(obj); }