forked from enlightenment/efl
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.singh@samsung.com>
This commit is contained in:
parent
1aa3dd0ec4
commit
6027ce9bad
|
@ -237,15 +237,6 @@ _entry_hide(Evas_Object *obj)
|
|||
sd->entry_visible = EINA_FALSE;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue