fix(slider): fix knob drawing in symmetrical mode
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user