ami pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=0aca43be2377c55260ef3224dc825bc41cddb1eb
commit 0aca43be2377c55260ef3224dc825bc41cddb1eb Author: Amitesh Singh <amitesh...@samsung.com> Date: Tue Feb 6 22:33:58 2018 +0900 efl.ui.progressbar: add checks for min & max value this improves the validity check for min & max values provided from user side. --- src/lib/elementary/efl_ui_progressbar.c | 29 +++++++++++++++++++++++------ 1 file 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 --