summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAmitesh Singh <amitesh.sh@samsung.com>2018-02-06 22:33:58 +0900
committerAmitesh Singh <amitesh.sh@samsung.com>2018-02-06 22:35:33 +0900
commit0aca43be2377c55260ef3224dc825bc41cddb1eb (patch)
treee6fa344d9666069157ba3d445ddc8a826940ee51
parent27c0d53f9b969bc641b3b321ce55b77230d62817 (diff)
downloadefl-0aca43be2377c55260ef3224dc825bc41cddb1eb.tar.gz
efl.ui.progressbar: add checks for min & max value
this improves the validity check for min & max values provided from user side.
-rw-r--r--src/lib/elementary/efl_ui_progressbar.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/src/lib/elementary/efl_ui_progressbar.c b/src/lib/elementary/efl_ui_progressbar.c
index 2177cd28f6..2654b1a850 100644
--- a/src/lib/elementary/efl_ui_progressbar.c
+++ b/src/lib/elementary/efl_ui_progressbar.c
@@ -130,16 +130,21 @@ _val_set(Evas_Object *obj)
{
Eina_Bool rtl;
double pos;
+ Efl_Ui_Progress_Status *ps;
+ Eina_List *l;
EFL_UI_PROGRESSBAR_DATA_GET(obj, sd);
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
rtl = efl_ui_mirrored_get(obj);
- Efl_Ui_Progress_Status *ps;
- Eina_List *l;
EINA_LIST_FOREACH(sd->progress_status, l, ps)
{
+ if (EINA_DBL_EQ(ps->val_max, ps->val_min))
+ {
+ WRN("progressbar min and max are equal.");
+ continue;
+ }
pos = (ps->val - ps->val_min)/(ps->val_max - ps->val_min);
if ((!rtl && _is_inverted(sd->dir)) ||
@@ -478,12 +483,23 @@ _progressbar_span_size_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, Evas_Coord size
}
static void
-_progress_part_min_max_set(Efl_Ui_Progressbar_Data *sd, const char *part_name, double min, double max)
+_progress_part_min_max_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, const char *part_name, double min, double max)
{
Efl_Ui_Progress_Status *ps;
Eina_Bool existing_ps = EINA_FALSE;
Eina_List *l;
+ if (EINA_DBL_EQ(min, max))
+ {
+ ERR("min & max provided are equal.");
+ return;
+ }
+
+ if (min > max)
+ {
+ WRN("min is greater than max.");
+ }
+
if (!strcmp(part_name, "elm.cur.progressbar"))
{
sd->val_min = min;
@@ -507,6 +523,7 @@ _progress_part_min_max_set(Efl_Ui_Progressbar_Data *sd, const char *part_name, d
ps->val_max = max;
sd->progress_status = eina_list_append(sd->progress_status, ps);
}
+ _val_set(obj);
}
static void
@@ -622,9 +639,9 @@ _efl_ui_progressbar_pulse_get(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd)
}
EOLIAN static void
-_efl_ui_progressbar_efl_ui_range_range_min_max_set(Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data *sd, double min, double max)
+_efl_ui_progressbar_efl_ui_range_range_min_max_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, double min, double max)
{
- _progress_part_min_max_set(sd, "elm.cur.progressbar", min, max);
+ _progress_part_min_max_set(obj, sd, "elm.cur.progressbar", min, max);
}
EOLIAN static void
@@ -679,7 +696,7 @@ _efl_ui_progressbar_part_efl_ui_range_range_min_max_set(Eo *obj, void *_pd EINA_
Elm_Part_Data *pd = efl_data_scope_get(obj, EFL_UI_WIDGET_PART_CLASS);
Efl_Ui_Progressbar_Data *sd = efl_data_scope_get(pd->obj, EFL_UI_PROGRESSBAR_CLASS);
- _progress_part_min_max_set(sd, pd->part, min, max);
+ _progress_part_min_max_set(pd->obj, sd, pd->part, min, max);
}
EOLIAN static void