ryuan pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=3fb3eaf6942512937177188b1ab6462f1b493a39

commit 3fb3eaf6942512937177188b1ab6462f1b493a39
Author: Ryuan Choi <[email protected]>
Date:   Thu Feb 6 01:02:39 2014 +0900

    datetime: Enhance launching time of test_datetime by avoiding 
_reload_format() in visible_set()
    
    visible_set() only changes the visibility of one field while 
_reload_format()
    changes everything.
    
    This patch makes visible_set() just change only related field when only 
it's state
    is really changd(enabled <-> disabled) instead of calling _reload_format().
---
 src/lib/elm_datetime.c | 44 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/src/lib/elm_datetime.c b/src/lib/elm_datetime.c
index e47188b..6100b1c 100644
--- a/src/lib/elm_datetime.c
+++ b/src/lib/elm_datetime.c
@@ -982,6 +982,7 @@ _field_visible_set(Eo *obj, void *_pd, va_list *list)
 {
    Elm_Datetime_Field_Type fieldtype = va_arg(*list, Elm_Datetime_Field_Type);
    Eina_Bool visible = va_arg(*list, int);
+   char buf[BUFFER_SIZE];
    Datetime_Field *field;
 
    Elm_Datetime_Smart_Data *sd = _pd;
@@ -989,10 +990,51 @@ _field_visible_set(Eo *obj, void *_pd, va_list *list)
    if (fieldtype > ELM_DATETIME_AMPM) return;
 
    field = sd->field_list + fieldtype;
+   visible = !!visible;
    if (field->visible == visible) return;
 
    field->visible = visible;
-   _reload_format(obj);
+
+   if (visible)
+     {
+        sd->enabled_field_count++;
+
+        if (!field->fmt_exist) return;
+
+        snprintf(buf, sizeof(buf), EDC_PART_FIELD_ENABLE_SIG_STR,
+                 field->location);
+        elm_layout_signal_emit(obj, buf, "elm");
+
+        ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+        edje_object_message_signal_process(wd->resize_obj);
+
+        snprintf(buf, sizeof(buf), EDC_PART_FIELD_STR, field->location);
+        elm_layout_content_unset(obj, buf);
+        elm_layout_content_set(obj, buf, field->item_obj);
+     }
+   else
+     {
+        sd->enabled_field_count--;
+
+        if (!field->fmt_exist) return;
+
+        snprintf(buf, sizeof(buf), EDC_PART_FIELD_DISABLE_SIG_STR,
+                 field->location);
+        elm_layout_signal_emit(obj, buf, "elm");
+
+        ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
+        edje_object_message_signal_process(wd->resize_obj);
+
+        snprintf(buf, sizeof(buf), EDC_PART_FIELD_STR, field->location);
+        evas_object_hide(elm_layout_content_unset(obj, buf));
+     }
+
+   elm_layout_sizing_eval(obj);
+
+   if (!visible) return;
+   if (!dt_mod || !dt_mod->field_value_display) return;
+
+   dt_mod->field_value_display(sd->mod_data, field->item_obj);
 }
 
 EAPI void

-- 


Reply via email to