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

-- 


Reply via email to