forked from enlightenment/efl
efl_ui_*: get range users onto the same semantics
this commits introduces unified behaviour for the users of the range interfaces. This includes: - The same errors for limit_set errors - The same errors for value setting outside the range Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Differential Revision: https://phab.enlightenment.org/D9241
This commit is contained in:
parent
1e73201169
commit
5efb4b374e
|
@ -593,6 +593,17 @@ _progressbar_part_value_get(Efl_Ui_Progressbar_Data *sd, const char* part)
|
|||
EOLIAN static void
|
||||
_efl_ui_progressbar_efl_ui_range_display_range_value_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, double val)
|
||||
{
|
||||
if (val < sd->val_min)
|
||||
{
|
||||
ERR("Error, value is less than minimum");
|
||||
return;
|
||||
}
|
||||
|
||||
if (val > sd->val_max)
|
||||
{
|
||||
ERR("Error, value is greater than maximum");
|
||||
return;
|
||||
}
|
||||
if (EINA_DBL_EQ(sd->val, val)) return;
|
||||
|
||||
if (elm_widget_is_legacy(obj))
|
||||
|
@ -644,6 +655,16 @@ _efl_ui_progressbar_pulse_get(const Eo *obj EINA_UNUSED, Efl_Ui_Progressbar_Data
|
|||
EOLIAN static void
|
||||
_efl_ui_progressbar_efl_ui_range_display_range_limits_set(Eo *obj, Efl_Ui_Progressbar_Data *sd, double min, double max)
|
||||
{
|
||||
if (max < min)
|
||||
{
|
||||
ERR("Wrong params. min(%lf) is greater than max(%lf).", min, max);
|
||||
return;
|
||||
}
|
||||
if (EINA_DBL_EQ(max, min))
|
||||
{
|
||||
ERR("min and max must have a different value");
|
||||
return;
|
||||
}
|
||||
if (elm_widget_is_legacy(obj))
|
||||
_progress_part_min_max_set(obj, sd, "elm.cur.progressbar", min, max);
|
||||
else
|
||||
|
|
|
@ -719,7 +719,17 @@ _efl_ui_slider_efl_ui_layout_orientable_orientation_get(const Eo *obj EINA_UNUSE
|
|||
EOLIAN static void
|
||||
_efl_ui_slider_efl_ui_range_display_range_limits_set(Eo *obj, Efl_Ui_Slider_Data *sd, double min, double max)
|
||||
{
|
||||
if ((sd->val_min == min) && (sd->val_max == max)) return;
|
||||
if (max < min)
|
||||
{
|
||||
ERR("Wrong params. min(%lf) is greater than max(%lf).", min, max);
|
||||
return;
|
||||
}
|
||||
if (EINA_DBL_EQ(max, min))
|
||||
{
|
||||
ERR("min and max must have a different value");
|
||||
return;
|
||||
}
|
||||
if ((EINA_DBL_EQ(sd->val_min, min)) && (EINA_DBL_EQ(sd->val_max, max))) return;
|
||||
sd->val_min = min;
|
||||
sd->val_max = max;
|
||||
if (sd->val < sd->val_min) sd->val = sd->val_min;
|
||||
|
@ -738,7 +748,19 @@ _efl_ui_slider_efl_ui_range_display_range_limits_get(const Eo *obj EINA_UNUSED,
|
|||
EOLIAN static void
|
||||
_efl_ui_slider_efl_ui_range_display_range_value_set(Eo *obj, Efl_Ui_Slider_Data *sd, double val)
|
||||
{
|
||||
if (sd->val == val) return;
|
||||
if (val < sd->val_min)
|
||||
{
|
||||
ERR("Error, value is less than minimum");
|
||||
return;
|
||||
}
|
||||
|
||||
if (val > sd->val_max)
|
||||
{
|
||||
ERR("Error, value is greater than maximum");
|
||||
return;
|
||||
}
|
||||
|
||||
if (EINA_DBL_EQ(val, sd->val)) return;
|
||||
sd->val = val;
|
||||
|
||||
if (sd->val < sd->val_min) sd->val = sd->val_min;
|
||||
|
@ -762,10 +784,13 @@ _efl_ui_slider_efl_ui_range_interactive_range_step_get(const Eo *obj EINA_UNUSED
|
|||
EOLIAN static void
|
||||
_efl_ui_slider_efl_ui_range_interactive_range_step_set(Eo *obj EINA_UNUSED, Efl_Ui_Slider_Data *sd, double step)
|
||||
{
|
||||
if (sd->step == step) return;
|
||||
if (step <= 0)
|
||||
{
|
||||
ERR("Wrong param. The step(%lf) should be greater than 0.0", step);
|
||||
return;
|
||||
}
|
||||
|
||||
if (step < 0.0) step = 0.0;
|
||||
else if (step > 1.0) step = 1.0;
|
||||
if (sd->step == step) return;
|
||||
|
||||
sd->step = step;
|
||||
}
|
||||
|
|
|
@ -108,10 +108,13 @@ _efl_ui_spin_efl_ui_range_display_range_limits_set(Eo *obj, Efl_Ui_Spin_Data *sd
|
|||
{
|
||||
if (max < min)
|
||||
{
|
||||
ERR("Wrong params. min(%lf) is bigger than max(%lf). It will swaped.", min, max);
|
||||
double t = min;
|
||||
min = max;
|
||||
max = t;
|
||||
ERR("Wrong params. min(%lf) is greater than max(%lf).", min, max);
|
||||
return;
|
||||
}
|
||||
if (EINA_DBL_EQ(max, min))
|
||||
{
|
||||
ERR("min and max must have a different value");
|
||||
return;
|
||||
}
|
||||
if ((EINA_DBL_EQ(sd->val_min, min)) && (EINA_DBL_EQ(sd->val_max, max))) return;
|
||||
|
||||
|
@ -153,9 +156,16 @@ EOLIAN static void
|
|||
_efl_ui_spin_efl_ui_range_display_range_value_set(Eo *obj, Efl_Ui_Spin_Data *sd, double val)
|
||||
{
|
||||
if (val < sd->val_min)
|
||||
val = sd->val_min;
|
||||
else if (val > sd->val_max)
|
||||
val = sd->val_max;
|
||||
{
|
||||
ERR("Error, value is less than minimum");
|
||||
return;
|
||||
}
|
||||
|
||||
if (val > sd->val_max)
|
||||
{
|
||||
ERR("Error, value is greater than maximum");
|
||||
return;
|
||||
}
|
||||
|
||||
if (EINA_DBL_EQ(val, sd->val)) return;
|
||||
|
||||
|
|
|
@ -168,7 +168,7 @@ static void
|
|||
_entry_value_apply(Evas_Object *obj)
|
||||
{
|
||||
const char *str;
|
||||
double val;
|
||||
double val, val_min, val_max;
|
||||
char *end;
|
||||
|
||||
Efl_Ui_Spin_Button_Data *sd = efl_data_scope_get(obj, MY_CLASS);
|
||||
|
@ -184,6 +184,8 @@ _entry_value_apply(Evas_Object *obj)
|
|||
|
||||
val = strtod(str, &end);
|
||||
if (((*end != '\0') && (!isspace(*end))) || (fabs(val - pd->val) < DBL_EPSILON)) return;
|
||||
efl_ui_range_limits_get(obj, &val_min, &val_max);
|
||||
val = MIN(val_max, MAX(val_min, val));
|
||||
efl_ui_range_value_set(obj, val);
|
||||
|
||||
efl_event_callback_call(obj, EFL_UI_SPIN_EVENT_CHANGED, NULL);
|
||||
|
@ -406,7 +408,9 @@ _spin_value(void *data)
|
|||
Efl_Ui_Spin_Button_Data *sd = efl_data_scope_get(data, MY_CLASS);
|
||||
Efl_Ui_Spin_Data *pd = efl_data_scope_get(data, EFL_UI_SPIN_CLASS);
|
||||
|
||||
if (_value_set(data, pd->val + (sd->inc_val ? pd->step : -pd->step)))
|
||||
int absolut_value = pd->val + (sd->inc_val ? pd->step : -pd->step);
|
||||
|
||||
if (_value_set(data, MIN(MAX(absolut_value, pd->val_min), pd->val_max)))
|
||||
_label_write(data);
|
||||
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
|
|
Loading…
Reference in New Issue