From 6e5440705edf97e8effa166cf660c3f8018d5c30 Mon Sep 17 00:00:00 2001 From: Andrii Kroitor Date: Tue, 29 Sep 2015 08:54:34 +0100 Subject: [PATCH] spinner: fix extra callback calls After a52a53802aebf03d297aa857f0cb6a9779949a49 callback was called after every spinner value change even if it was made from code. This commit fixes unfocus issues without breaking callbacks logic @fix Reviewers: CHAN, ajwillia.ms Subscribers: CHAN, ajwillia.ms Differential Revision: https://phab.enlightenment.org/D3107 Signed-off-by: Andy Williams --- legacy/elementary/src/lib/elm_spinner.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/legacy/elementary/src/lib/elm_spinner.c b/legacy/elementary/src/lib/elm_spinner.c index 9dbad3e2f1..db3781a202 100644 --- a/legacy/elementary/src/lib/elm_spinner.c +++ b/legacy/elementary/src/lib/elm_spinner.c @@ -265,8 +265,6 @@ _val_set(Evas_Object *obj) pos = 1.0; edje_object_part_drag_value_set (wd->resize_obj, "elm.dragable.slider", pos, pos); - - eo_do(obj, eo_event_callback_call(ELM_SPINNER_EVENT_CHANGED, NULL)); } static void @@ -373,8 +371,13 @@ _entry_value_apply(Evas_Object *obj) str = elm_object_text_get(sd->ent); if (!str) return; val = strtod(str, &end); - if ((*end != '\0') && (!isspace(*end))) return; + if (((*end != '\0') && (!isspace(*end))) || (fabs(val - sd->val) < DBL_EPSILON)) return; elm_spinner_value_set(obj, val); + + eo_do(obj, eo_event_callback_call(ELM_SPINNER_EVENT_CHANGED, NULL)); + ecore_timer_del(sd->delay_change_timer); + sd->delay_change_timer = ecore_timer_add(ELM_SPINNER_DELAY_CHANGE_TIME, + _delay_change_timer_cb, obj); } static Eina_Bool @@ -382,13 +385,7 @@ _entry_activated_cb(void *data, Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) { - ELM_SPINNER_DATA_GET(data, sd); - _entry_value_apply(data); - eo_do(data, eo_event_callback_call(ELM_SPINNER_EVENT_CHANGED, NULL)); - ecore_timer_del(sd->delay_change_timer); - sd->delay_change_timer = ecore_timer_add(ELM_SPINNER_DELAY_CHANGE_TIME, - _delay_change_timer_cb, data); return EINA_TRUE; }