forked from enlightenment/efl
datetime: Refactor to launch test_datetime little bit faster
- Added enabled_filed_count to avoid loop in _elm_datetime_smart_sizing_eval(). sizing_eval is called many times but field_count is only changed when called _reload_format(). - Moved redundant if statement out of the loop in _field_list_display(). - Removed redundant call from _elm_datetime_smart_add(). _field_list_arrange() is called in _reload_format().
This commit is contained in:
parent
2677fd33fb
commit
c449cc96c6
|
@ -103,15 +103,14 @@ _field_list_display(Evas_Object *obj)
|
||||||
|
|
||||||
ELM_DATETIME_DATA_GET(obj, sd);
|
ELM_DATETIME_DATA_GET(obj, sd);
|
||||||
|
|
||||||
|
if (!dt_mod || !dt_mod->field_value_display) return;
|
||||||
|
|
||||||
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
||||||
{
|
{
|
||||||
field = sd->field_list + idx;
|
field = sd->field_list + idx;
|
||||||
if (field->fmt_exist && field->visible)
|
if (field->fmt_exist && field->visible)
|
||||||
{
|
|
||||||
if ((dt_mod) && (dt_mod->field_value_display))
|
|
||||||
dt_mod->field_value_display(sd->mod_data, field->item_obj);
|
dt_mod->field_value_display(sd->mod_data, field->item_obj);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: provide nl_langinfo on Windows if possible
|
// FIXME: provide nl_langinfo on Windows if possible
|
||||||
|
@ -326,6 +325,7 @@ _reload_format(Evas_Object *obj)
|
||||||
_expand_format(dt_fmt);
|
_expand_format(dt_fmt);
|
||||||
|
|
||||||
// reset all the fields to disable state
|
// reset all the fields to disable state
|
||||||
|
sd->enabled_field_count = 0;
|
||||||
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
||||||
{
|
{
|
||||||
field = sd->field_list + idx;
|
field = sd->field_list + idx;
|
||||||
|
@ -336,6 +336,13 @@ _reload_format(Evas_Object *obj)
|
||||||
field_count = _parse_format(obj, dt_fmt);
|
field_count = _parse_format(obj, dt_fmt);
|
||||||
free(dt_fmt);
|
free(dt_fmt);
|
||||||
|
|
||||||
|
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
||||||
|
{
|
||||||
|
field = sd->field_list + idx;
|
||||||
|
if (field->fmt_exist && field->visible)
|
||||||
|
sd->enabled_field_count++;
|
||||||
|
}
|
||||||
|
|
||||||
// assign locations to disabled fields for uniform usage
|
// assign locations to disabled fields for uniform usage
|
||||||
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
||||||
{
|
{
|
||||||
|
@ -495,20 +502,14 @@ _elm_datetime_smart_disable(Eo *obj, void *_pd, va_list *list)
|
||||||
static void
|
static void
|
||||||
_elm_datetime_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
_elm_datetime_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Datetime_Field *field;
|
|
||||||
Evas_Coord minw = -1, minh = -1;
|
Evas_Coord minw = -1, minh = -1;
|
||||||
unsigned int idx, field_count = 0;
|
|
||||||
|
|
||||||
Elm_Datetime_Smart_Data *sd = _pd;
|
Elm_Datetime_Smart_Data *sd = _pd;
|
||||||
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
|
||||||
|
|
||||||
for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++)
|
if (sd->enabled_field_count)
|
||||||
{
|
elm_coords_finger_size_adjust(sd->enabled_field_count, &minw, 1, &minh);
|
||||||
field = sd->field_list + idx;
|
|
||||||
if ((field->visible) && (field->fmt_exist)) field_count++;
|
|
||||||
}
|
|
||||||
if (field_count)
|
|
||||||
elm_coords_finger_size_adjust(field_count, &minw, 1, &minh);
|
|
||||||
edje_object_size_min_restricted_calc
|
edje_object_size_min_restricted_calc
|
||||||
(wd->resize_obj, &minw, &minh, minw, minh);
|
(wd->resize_obj, &minw, &minh, minw, minh);
|
||||||
evas_object_size_hint_min_set(obj, minw, minh);
|
evas_object_size_hint_min_set(obj, minw, minh);
|
||||||
|
@ -836,8 +837,6 @@ _elm_datetime_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
|
||||||
_field_list_init(obj);
|
_field_list_init(obj);
|
||||||
_reload_format(obj);
|
_reload_format(obj);
|
||||||
|
|
||||||
_field_list_arrange(obj);
|
|
||||||
|
|
||||||
elm_widget_can_focus_set(obj, EINA_TRUE);
|
elm_widget_can_focus_set(obj, EINA_TRUE);
|
||||||
|
|
||||||
elm_layout_sizing_eval(obj);
|
elm_layout_sizing_eval(obj);
|
||||||
|
|
|
@ -61,6 +61,7 @@ struct _Elm_Datetime_Smart_Data
|
||||||
Elm_Datetime_Module_Data *mod_data;
|
Elm_Datetime_Module_Data *mod_data;
|
||||||
char format[ELM_DATETIME_MAX_FORMAT_LEN];
|
char format[ELM_DATETIME_MAX_FORMAT_LEN];
|
||||||
Evas_Object *access_obj;
|
Evas_Object *access_obj;
|
||||||
|
int enabled_field_count;
|
||||||
Eina_Bool user_format : 1; /* whether user set
|
Eina_Bool user_format : 1; /* whether user set
|
||||||
* format or default
|
* format or default
|
||||||
* format. */
|
* format. */
|
||||||
|
|
Loading…
Reference in New Issue