diff --git a/src/widgets/lv_slider.c b/src/widgets/lv_slider.c index faee0faa8b..9c820c22ad 100644 --- a/src/widgets/lv_slider.c +++ b/src/widgets/lv_slider.c @@ -238,7 +238,6 @@ static void lv_slider_event(const lv_obj_class_t * class_p, lv_event_t * e) } new_value = LV_CLAMP(real_min_value, new_value, real_max_value); - if(*slider->value_to_set != new_value) { *slider->value_to_set = new_value; lv_obj_invalidate(obj); @@ -337,15 +336,16 @@ static void draw_knob(lv_event_t * e) lv_area_t knob_area; lv_coord_t knob_size; + bool is_symmetrical = false; + if(slider->bar.mode == LV_BAR_MODE_SYMMETRICAL && slider->bar.min_value < 0 && + slider->bar.max_value > 0) is_symmetrical = true; + if(is_horizontal) { knob_size = lv_obj_get_height(obj); - knob_area.x1 = LV_SLIDER_KNOB_COORD(is_rtl, slider->bar.indic_area); + if(is_symmetrical && slider->bar.cur_value < 0) knob_area.x1 = slider->bar.indic_area.x1; + else knob_area.x1 = LV_SLIDER_KNOB_COORD(is_rtl, slider->bar.indic_area); } else { - bool is_symmetrical = false; - if(slider->bar.mode == LV_BAR_MODE_SYMMETRICAL && slider->bar.min_value < 0 && - slider->bar.max_value > 0) is_symmetrical = true; - knob_size = lv_obj_get_width(obj); if(is_symmetrical && slider->bar.cur_value < 0) knob_area.y1 = slider->bar.indic_area.y2; else knob_area.y1 = slider->bar.indic_area.y1;