From 5d45fc195f95341500178c80728a625d00ad7076 Mon Sep 17 00:00:00 2001 From: Daniel Juyung Seo Date: Tue, 21 Jan 2014 22:12:53 +0900 Subject: [PATCH] spinner: Create an internal entry when it is really needed. Do not create the internal entry on smart add. Create that when it is needed with editable mode. --- legacy/elementary/src/lib/elm_spinner.c | 57 +++++++++++++------------ 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/legacy/elementary/src/lib/elm_spinner.c b/legacy/elementary/src/lib/elm_spinner.c index 99311a7d56..9fb3c7ebb2 100644 --- a/legacy/elementary/src/lib/elm_spinner.c +++ b/legacy/elementary/src/lib/elm_spinner.c @@ -258,24 +258,46 @@ _entry_value_apply(Evas_Object *obj) } static void -_entry_toggle_cb(void *data, - Evas_Object *obj EINA_UNUSED, +_entry_activated_cb(void *data, + Evas_Object *obj EINA_UNUSED, + void *event_info EINA_UNUSED) +{ + ELM_SPINNER_DATA_GET(data, sd); + + _entry_value_apply(data); + evas_object_smart_callback_call(data, SIG_CHANGED, NULL); + if (sd->delay_timer) ecore_timer_del(sd->delay_timer); + sd->delay_timer = ecore_timer_add(0.2, _delay_change, data); +} + +static void +_entry_toggle_cb(void *data EINA_UNUSED, + Evas_Object *obj, const char *emission EINA_UNUSED, const char *source EINA_UNUSED) { - ELM_SPINNER_DATA_GET(data, sd); + ELM_SPINNER_DATA_GET(obj, sd); if (sd->dragging) { sd->dragging = 0; return; } - if (elm_widget_disabled_get(data)) return; + if (elm_widget_disabled_get(obj)) return; if (!sd->editable) return; - if (sd->entry_visible) _entry_value_apply(data); + if (sd->entry_visible) _entry_value_apply(obj); else { - elm_layout_signal_emit(data, "elm,state,active", "elm"); + if (!sd->ent) + { + sd->ent = elm_entry_add(obj); + elm_entry_single_line_set(sd->ent, EINA_TRUE); + evas_object_smart_callback_add + (sd->ent, "activated", _entry_activated_cb, obj); + elm_layout_content_set(obj, "elm.swallow.entry", sd->ent); + } + + elm_layout_signal_emit(obj, "elm,state,active", "elm"); _entry_show(sd); elm_entry_select_all(sd->ent); elm_widget_focus_set(sd->ent, EINA_TRUE); @@ -401,19 +423,6 @@ _button_dec_stop_cb(void *data, _val_dec_stop(data); } -static void -_entry_activated_cb(void *data, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) -{ - ELM_SPINNER_DATA_GET(data, sd); - - _entry_value_apply(data); - evas_object_smart_callback_call(data, SIG_CHANGED, NULL); - if (sd->delay_timer) ecore_timer_del(sd->delay_timer); - sd->delay_timer = ecore_timer_add(0.2, _delay_change, data); -} - static void _elm_spinner_smart_sizing_eval(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED) { @@ -482,7 +491,7 @@ _elm_spinner_smart_event(Eo *obj, void *_pd EINA_UNUSED, va_list *list) (!strcmp(ev->key, "KP_Enter")) || (!strcmp(ev->key, "space"))) { - _entry_toggle_cb(obj, NULL, NULL, NULL); + _entry_toggle_cb(NULL, obj, NULL, NULL); } } else if (type == EVAS_CALLBACK_KEY_UP) @@ -710,14 +719,8 @@ _elm_spinner_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED) edje_object_part_drag_value_set (wd->resize_obj, "elm.dragable.slider", 0.0, 0.0); - priv->ent = elm_entry_add(obj); - elm_entry_single_line_set(priv->ent, EINA_TRUE); - evas_object_smart_callback_add - (priv->ent, "activated", _entry_activated_cb, obj); - - elm_layout_content_set(obj, "elm.swallow.entry", priv->ent); elm_layout_signal_callback_add - (obj, "elm,action,entry,toggle", "*", _entry_toggle_cb, obj); + (obj, "elm,action,entry,toggle", "*", _entry_toggle_cb, NULL); _label_write(obj); elm_widget_can_focus_set(obj, EINA_TRUE);