efl_ui_spin_button: Fix can't input number in case of the min value is bigger than 1.

Summary:
Min Max validate logic has been changed to support decimal point counting.
It makes this side effect.

Test Plan:
elementary_test -> efl_ui_spin_button sample.
(On the min max filter enabled.)

Reviewers: jpeg, Jaehyun_Cho, woohyun

Reviewed By: Jaehyun_Cho

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5580
This commit is contained in:
Woochan Lee 2017-12-18 13:23:32 +09:00 committed by Jaehyun Cho
parent 7ae1030383
commit 845d6d1b57
1 changed files with 8 additions and 9 deletions

View File

@ -285,7 +285,7 @@ _min_max_validity_filter(void *data, Evas_Object *obj, char **text)
const char *str, *point;
char *insert, *new_str = NULL;
double val;
int max_len, len;
int max_len = 0, len;
EINA_SAFETY_ON_NULL_RETURN(data);
EINA_SAFETY_ON_NULL_RETURN(obj);
@ -299,15 +299,9 @@ _min_max_validity_filter(void *data, Evas_Object *obj, char **text)
insert = *text;
new_str = _text_insert(str, insert, elm_entry_cursor_pos_get(obj));
if (!new_str) return;
max_len = log10(fabs(pd->val_max)) + 1;
if (strchr(new_str, '-')) max_len++;
new_str = _text_insert(str, insert, elm_entry_cursor_pos_get(obj));
if (pd->format_type == SPIN_FORMAT_INT)
{
len = strlen(new_str);
if (len < max_len) goto end;
}
else if (pd->format_type == SPIN_FORMAT_FLOAT)
if (pd->format_type == SPIN_FORMAT_FLOAT)
{
point = strchr(new_str, '.');
if (point)
@ -320,6 +314,11 @@ _min_max_validity_filter(void *data, Evas_Object *obj, char **text)
}
}
max_len += (fabs(pd->val_max) > fabs(pd->val_min)) ?
(log10(fabs(pd->val_max)) + 1) : (log10(fabs(pd->val_min)) + 1);
len = strlen(new_str);
if (len < max_len) goto end;
val = strtod(new_str, NULL);
if ((val < pd->val_min) || (val > pd->val_max))
*insert = 0;