ryuan pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=28609ee56e8b2d1a8a693bac1f512ea805a146b9
commit 28609ee56e8b2d1a8a693bac1f512ea805a146b9 Author: Ryuan Choi <ryuan.c...@gmail.com> Date: Thu Jan 16 22:44:07 2014 +0900 datetime: Delay elm_layout_theme_set until memebers are initialized in _smart_add There are some warnings in elm_object_disabled_set() because elm_layout_theme_set() calls _elm_datetime_smart_disable() before creating file->item_obj. This patch refactors _smart_add to initialize file->item_obj before calling elm_layout_theme_set(). --- src/lib/elm_datetime.c | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/src/lib/elm_datetime.c b/src/lib/elm_datetime.c index 42d6c80..008b687 100644 --- a/src/lib/elm_datetime.c +++ b/src/lib/elm_datetime.c @@ -803,34 +803,40 @@ _elm_datetime_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) eo_do_super(obj, MY_CLASS, evas_obj_smart_add()); elm_widget_sub_object_parent_add(obj); - if (!elm_layout_theme_set(obj, "datetime", "base", - elm_widget_style_get(obj))) - CRI("Failed to set layout!"); - // module - initialise module for datetime if (!dt_mod) dt_mod = _dt_mod_init(); - if ((dt_mod) && (dt_mod->obj_hook)) priv->mod_data = dt_mod->obj_hook(obj); - - // update module data - if (priv->mod_data) + if (dt_mod) { - priv->mod_data->base = obj; - priv->mod_data->field_limit_get = _field_limit_get; - priv->mod_data->field_format_get = _field_format_get; - } + if (dt_mod->obj_hook) + { + priv->mod_data = dt_mod->obj_hook(obj); - _field_list_init(obj); - _reload_format(obj); + // update module data + if (priv->mod_data) + { + priv->mod_data->base = obj; + priv->mod_data->field_limit_get = _field_limit_get; + priv->mod_data->field_format_get = _field_format_get; + } + } - if ((dt_mod) && (dt_mod->field_create)) - { - for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++) + if (dt_mod->field_create) { - field = priv->field_list + idx; - field->item_obj = dt_mod->field_create(priv->mod_data, idx); + for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++) + { + field = priv->field_list + idx; + field->item_obj = dt_mod->field_create(priv->mod_data, idx); + } } } + if (!elm_layout_theme_set(obj, "datetime", "base", + elm_widget_style_get(obj))) + CRI("Failed to set layout!"); + + _field_list_init(obj); + _reload_format(obj); + _field_list_arrange(obj); elm_widget_can_focus_set(obj, EINA_TRUE); --