From c449cc96c66473d77902451974c8be18c803b2e9 Mon Sep 17 00:00:00 2001 From: Ryuan Choi Date: Mon, 3 Feb 2014 09:03:26 +0900 Subject: [PATCH] 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(). --- legacy/elementary/src/lib/elm_datetime.c | 29 +++++++++---------- .../elementary/src/lib/elm_widget_datetime.h | 1 + 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/legacy/elementary/src/lib/elm_datetime.c b/legacy/elementary/src/lib/elm_datetime.c index bb5ede9283..5553b3081c 100644 --- a/legacy/elementary/src/lib/elm_datetime.c +++ b/legacy/elementary/src/lib/elm_datetime.c @@ -103,14 +103,13 @@ _field_list_display(Evas_Object *obj) ELM_DATETIME_DATA_GET(obj, sd); + if (!dt_mod || !dt_mod->field_value_display) return; + for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++) { field = sd->field_list + idx; 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); } } @@ -326,6 +325,7 @@ _reload_format(Evas_Object *obj) _expand_format(dt_fmt); // reset all the fields to disable state + sd->enabled_field_count = 0; for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++) { field = sd->field_list + idx; @@ -336,6 +336,13 @@ _reload_format(Evas_Object *obj) field_count = _parse_format(obj, 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 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 _elm_datetime_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED) { - Datetime_Field *field; Evas_Coord minw = -1, minh = -1; - unsigned int idx, field_count = 0; Elm_Datetime_Smart_Data *sd = _pd; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - for (idx = 0; idx < ELM_DATETIME_TYPE_COUNT; idx++) - { - 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); + if (sd->enabled_field_count) + elm_coords_finger_size_adjust(sd->enabled_field_count, &minw, 1, &minh); + edje_object_size_min_restricted_calc (wd->resize_obj, &minw, &minh, 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); _reload_format(obj); - _field_list_arrange(obj); - elm_widget_can_focus_set(obj, EINA_TRUE); elm_layout_sizing_eval(obj); diff --git a/legacy/elementary/src/lib/elm_widget_datetime.h b/legacy/elementary/src/lib/elm_widget_datetime.h index f49b790b0b..58e25ff673 100644 --- a/legacy/elementary/src/lib/elm_widget_datetime.h +++ b/legacy/elementary/src/lib/elm_widget_datetime.h @@ -61,6 +61,7 @@ struct _Elm_Datetime_Smart_Data Elm_Datetime_Module_Data *mod_data; char format[ELM_DATETIME_MAX_FORMAT_LEN]; Evas_Object *access_obj; + int enabled_field_count; Eina_Bool user_format : 1; /* whether user set * format or default * format. */