raster pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=617cf8859f0f1fec5ea60fefef446b4454815554

commit 617cf8859f0f1fec5ea60fefef446b4454815554
Author: Shilpa Singh <shilpa.si...@samsung.com>
Date:   Sat Nov 2 20:33:00 2013 +0900

    Elm_Spinner: UI Concept change fix.
    
    Older UI concept: when text in spinner's entry is inputted and text is
    not committed yet and when inc/dec is clicked. do not commit text and
    reset the value to older original value.
    
    New UI concept:
    When Text in spinner's entry is inputted and text is not committed yet
    and when inc/dec buttons are clicked.
    Commit the entry's text and inc/dec accordingly.
    If entry' s text is already modified owing to min/max update, then do not 
inc/dec.
    
    Signed-off by: Shilpa Singh <shilpa.si...@samsung.com>
---
 src/lib/elm_spinner.c        | 32 ++++++++++++++++----------------
 src/lib/elm_widget_spinner.h |  3 ++-
 2 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/src/lib/elm_spinner.c b/src/lib/elm_spinner.c
index fad85fa..a686abd 100644
--- a/src/lib/elm_spinner.c
+++ b/src/lib/elm_spinner.c
@@ -238,15 +238,6 @@ _entry_hide(Evas_Object *obj)
 }
 
 static void
-_reset_value(Evas_Object *obj)
-{
-   ELM_SPINNER_DATA_GET(obj, sd);
-
-   _entry_hide(obj);
-   elm_spinner_value_set(obj, sd->orig_val);
-}
-
-static void
 _entry_value_apply(Evas_Object *obj)
 {
    const char *str;
@@ -283,7 +274,6 @@ _entry_toggle_cb(void *data,
    if (sd->entry_visible) _entry_value_apply(data);
    else
      {
-        sd->orig_val = sd->val;
         elm_layout_signal_emit(data, "elm,state,active", "elm");
         _entry_show(sd);
         elm_entry_select_all(sd->ent);
@@ -358,7 +348,7 @@ _val_dec_stop(Evas_Object *obj)
 
 static void
 _button_inc_start_cb(void *data,
-                     Evas_Object *obj __UNUSED__,
+                     Evas_Object *obj,
                      const char *emission __UNUSED__,
                      const char *source __UNUSED__)
 {
@@ -366,7 +356,8 @@ _button_inc_start_cb(void *data,
 
    if (sd->entry_visible)
      {
-        _reset_value(data);
+        _entry_value_apply(obj);
+        if ((sd->val_updated) && (sd->val == sd->val_min)) return;
         return;
      }
    _val_inc_start(data);
@@ -391,8 +382,8 @@ _button_dec_start_cb(void *data,
 
    if (sd->entry_visible)
      {
-        _reset_value(data);
-        return;
+        _entry_value_apply(obj);
+        if ((sd->val_updated) && (sd->val == sd->val_max)) return;
      }
    _val_dec_start(data);
 }
@@ -979,8 +970,17 @@ _elm_spinner_value_set(Eo *obj, void *_pd, va_list *list)
 
    if (sd->val == val) return;
    sd->val = val;
-   if (sd->val < sd->val_min) sd->val = sd->val_min;
-   if (sd->val > sd->val_max) sd->val = sd->val_max;
+   sd->val_updated = EINA_FALSE;
+   if (sd->val < sd->val_min)
+     {
+        sd->val = sd->val_min;
+        sd->val_updated = EINA_TRUE;
+     }
+   if (sd->val > sd->val_max)
+     {
+        sd->val = sd->val_max;
+        sd->val_updated = EINA_TRUE;
+     }
    _val_set(obj);
    _label_write(obj);
 }
diff --git a/src/lib/elm_widget_spinner.h b/src/lib/elm_widget_spinner.h
index 119771d..4c39f2c 100644
--- a/src/lib/elm_widget_spinner.h
+++ b/src/lib/elm_widget_spinner.h
@@ -26,7 +26,7 @@ struct _Elm_Spinner_Smart_Data
 {
    Evas_Object          *ent;
    const char           *label;
-   double                val, val_min, val_max, orig_val, val_base;
+   double                val, val_min, val_max, val_base;
    double                step; // step for the value change. 1 by default.
    double                drag_start_val; // spinner value on drag start.
                                          // this is reset to 0 when drag stops.
@@ -39,6 +39,7 @@ struct _Elm_Spinner_Smart_Data
    Eina_Bool             dragging : 1;
    Eina_Bool             editable : 1;
    Eina_Bool             wrap : 1;
+   Eina_Bool             val_updated : 1;
 };
 
 typedef struct _Elm_Spinner_Special_Value Elm_Spinner_Special_Value;

-- 


Reply via email to