forked from enlightenment/efl
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:
parent
240f880808
commit
9a17bd67a7
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue