elm/slider: check for interval/range state before using that functionality

Summary:
the part elm.dragable2.slider only exists when the slider is set to range
mode, so verify that this mode is active before attempting to use that part

@fix

Depends on D8968

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8969
This commit is contained in:
Mike Blumenkrantz 2019-05-29 09:22:25 -04:00
parent 1051a1ca46
commit 695dfb650a
1 changed files with 13 additions and 9 deletions

View File

@ -549,10 +549,13 @@ _elm_slider_val_fetch(Evas_Object *obj, Elm_Slider_Data *pd, Eina_Bool user_even
if (efl_ui_layout_orientation_is_horizontal(sd->dir, EINA_TRUE)) pos = posx;
else pos = posy;
efl_ui_drag_value_get(efl_part(wd->resize_obj, "elm.dragable2.slider"),
&posx2, &posy2);
if (efl_ui_layout_orientation_is_horizontal(sd->dir, EINA_TRUE)) pos2 = posx2;
else pos2 = posy2;
if (pd->intvl_enable)
{
efl_ui_drag_value_get(efl_part(wd->resize_obj, "elm.dragable2.slider"),
&posx2, &posy2);
if (efl_ui_layout_orientation_is_horizontal(sd->dir, EINA_TRUE)) pos2 = posx2;
else pos2 = posy2;
}
if (efl_ui_mirrored_get(obj) ^ efl_ui_layout_orientation_is_inverted(sd->dir))
{
@ -562,10 +565,10 @@ _elm_slider_val_fetch(Evas_Object *obj, Elm_Slider_Data *pd, Eina_Bool user_even
}
val = (pos * (sd->val_max - sd->val_min)) + sd->val_min;
val2 = (pos2 * (sd->val_max - sd->val_min)) + sd->val_min;
if (pd->intvl_enable)
{
val2 = (pos2 * (sd->val_max - sd->val_min)) + sd->val_min;
if (!inverted)
{
if (val > id->intvl_to)
@ -606,7 +609,7 @@ _elm_slider_val_fetch(Evas_Object *obj, Elm_Slider_Data *pd, Eina_Bool user_even
}
}
if (fabs(val2 - id->intvl_to) > DBL_EPSILON)
if (pd->intvl_enable && fabs(val2 - id->intvl_to) > DBL_EPSILON)
{
id->intvl_to = val2;
/* avoid emitting two events and setting a timer twice */
@ -620,7 +623,7 @@ _elm_slider_val_fetch(Evas_Object *obj, Elm_Slider_Data *pd, Eina_Bool user_even
}
void
_elm_slider_val_set(Evas_Object *obj, Elm_Slider_Data *pd EINA_UNUSED)
_elm_slider_val_set(Evas_Object *obj, Elm_Slider_Data *pd)
{
double pos, pos2;
@ -655,8 +658,9 @@ _elm_slider_val_set(Evas_Object *obj, Elm_Slider_Data *pd EINA_UNUSED)
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable.slider"),
pos, pos);
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable2.slider"),
pos2, pos2);
if (pd->intvl_enable)
efl_ui_drag_value_set(efl_part(wd->resize_obj, "elm.dragable2.slider"),
pos2, pos2);
// emit accessibility event also if value was changed by API
if (_elm_config->atspi_mode)