diff --git a/CHANGELOG.md b/CHANGELOG.md index 1231f53483..20bb2b00a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,13 +3,13 @@ ## v7.11.0 (Planned for 19.02.2021) ### New features -- Add better screen oriantetaion management with sowftware rotation support +- Add better screen orientation management with software rotation support ### Bugfixes - fix(gauge) fix needle invalidation +- fix(bar) correct symmetric handling for vertical sliders - -## v7.10.1 +## v7.10.1 (Planned for 16.02.2021) ### Bugfixes - fix(draw) overlap outline with background to prevent aliasing artifacts diff --git a/src/lv_widgets/lv_bar.c b/src/lv_widgets/lv_bar.c index e0ae76b716..f359c7149c 100644 --- a/src/lv_widgets/lv_bar.c +++ b/src/lv_widgets/lv_bar.c @@ -531,17 +531,34 @@ static void draw_indic(lv_obj_t * bar, const lv_area_t * clip_area) *axis1 += anim_start_value_x; } else { - *axis1 = *axis2 - anim_cur_value_x; + *axis1 = *axis2 - anim_cur_value_x + 1; *axis2 -= anim_start_value_x; } if(sym) { - lv_coord_t zero; - zero = *axis1 + (-ext->min_value * anim_length) / range; - if(*axis2 > zero) - *axis1 = zero; - else { - *axis1 = *axis2; - *axis2 = zero; + lv_coord_t zero, shift; + shift = (-ext->min_value * anim_length) / range; + if(hor) { + zero = *axis1 + shift; + if(*axis2 > zero) + *axis1 = zero; + else { + *axis1 = *axis2; + *axis2 = zero; + } + } else { + zero = *axis2 - shift + 1; + if(*axis1 > zero) + *axis2 = zero; + else { + *axis2 = *axis1; + *axis1 = zero; + } + if(*axis2 < *axis1) { + /* swap */ + zero = *axis1; + *axis1 = *axis2; + *axis2 = zero; + } } }