forked from enlightenment/efl
spinner: Add to support spinner value %d format.
Summary: When user set min max as 50, 150 with %d format, then value set as 100. The spinner value set as '0' Because the sd->val type is double. Spinner entry has same problem. @fix Test Plan: Set spinner format as %d. Check the spinner value. It's not supported. Reviewers: Jaehyun_Cho, cedric, Hermet Reviewed By: Hermet Differential Revision: https://phab.enlightenment.org/D2898 Conflicts: src/lib/elm_spinner.c
This commit is contained in:
parent
eadac79a1e
commit
23d5820468
|
@ -50,6 +50,24 @@ static const Elm_Action key_actions[] = {
|
||||||
static void _access_increment_decrement_info_say(Evas_Object *obj,
|
static void _access_increment_decrement_info_say(Evas_Object *obj,
|
||||||
Eina_Bool is_incremented);
|
Eina_Bool is_incremented);
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_is_label_format_integer(const char *fmt)
|
||||||
|
{
|
||||||
|
const char *start = strchr(fmt, '%');
|
||||||
|
const char *itr;
|
||||||
|
|
||||||
|
for (itr = start + 1; *itr != '\0'; itr++)
|
||||||
|
{
|
||||||
|
if ((*itr == 'd') || (*itr == 'u') || (*itr == 'i') ||
|
||||||
|
(*itr == 'o') || (*itr == 'x') || (*itr == 'X'))
|
||||||
|
return EINA_TRUE;
|
||||||
|
else if ((*itr == 'f'))
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_entry_show(Elm_Spinner_Data *sd)
|
_entry_show(Elm_Spinner_Data *sd)
|
||||||
{
|
{
|
||||||
|
@ -100,9 +118,13 @@ _entry_show(Elm_Spinner_Data *sd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf(buf, sizeof(buf), fmt, sd->val);
|
|
||||||
|
|
||||||
apply:
|
apply:
|
||||||
|
if (_is_label_format_integer(fmt))
|
||||||
|
snprintf(buf, sizeof(buf), fmt, (int)sd->val);
|
||||||
|
else
|
||||||
|
snprintf(buf, sizeof(buf), fmt, sd->val);
|
||||||
|
|
||||||
elm_object_text_set(sd->ent, buf);
|
elm_object_text_set(sd->ent, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +147,12 @@ _label_write(Evas_Object *obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sd->label)
|
if (sd->label)
|
||||||
snprintf(buf, sizeof(buf), sd->label, sd->val);
|
{
|
||||||
|
if (_is_label_format_integer(sd->label))
|
||||||
|
snprintf(buf, sizeof(buf), sd->label, (int)sd->val);
|
||||||
|
else
|
||||||
|
snprintf(buf, sizeof(buf), sd->label, sd->val);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
snprintf(buf, sizeof(buf), "%.0f", sd->val);
|
snprintf(buf, sizeof(buf), "%.0f", sd->val);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue