efl_ui/spin_button: fix step clamping
authorMike Blumenkrantz <zmike@samsung.com>
Thu, 2 Jan 2020 19:05:41 +0000 (14:05 -0500)
committerJongmin Lee <jm105.lee@samsung.com>
Mon, 13 Jan 2020 21:11:25 +0000 (06:11 +0900)
values for this needs to be rounded off the step in order to be expected
step-values and not just double garbage

Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11006

src/lib/elementary/efl_ui_spin_button.c

index 2bdc6a9..d69e470 100644 (file)
@@ -405,10 +405,11 @@ static void
 _spin_value(Efl_Ui_Spin *obj, Eina_Bool inc)
 {
    Efl_Ui_Spin_Button_Data *pd = efl_data_scope_get(obj, EFL_UI_SPIN_BUTTON_CLASS);
+   double val = efl_ui_range_value_get(obj);
+   double step = inc ? pd->step : -pd->step;
 
-   double absolut_value = efl_ui_range_value_get(obj) + (inc ? pd->step : -pd->step);
-
-   _value_set(obj, absolut_value);
+   /* clamp to step before setting new value */
+   _value_set(obj, round((val + step) / step) * step);
 }
 
 static void