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().
This commit is contained in:
Ryuan Choi 2014-01-16 22:44:07 +09:00
parent 240f880808
commit 9a17bd67a7
1 changed files with 27 additions and 21 deletions

View File

@ -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);
// module - initialise module for datetime
if (!dt_mod) dt_mod = _dt_mod_init();
if (dt_mod)
{
if (dt_mod->obj_hook)
{
priv->mod_data = dt_mod->obj_hook(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->field_create)
{
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!");
// 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)
{
priv->mod_data->base = obj;
priv->mod_data->field_limit_get = _field_limit_get;
priv->mod_data->field_format_get = _field_format_get;
}
_field_list_init(obj);
_reload_format(obj);
if ((dt_mod) && (dt_mod->field_create))
{
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);
}
}
_field_list_arrange(obj);
elm_widget_can_focus_set(obj, EINA_TRUE);