From 58708ca771725751738a66371c9c1244964275cc Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 1 Mar 2021 14:01:13 +0100 Subject: [PATCH] fix(gauge): fix needle invalidation --- src/lv_widgets/lv_gauge.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lv_widgets/lv_gauge.c b/src/lv_widgets/lv_gauge.c index dee4e4a5b..bba5266ae 100644 --- a/src/lv_widgets/lv_gauge.c +++ b/src/lv_widgets/lv_gauge.c @@ -197,9 +197,13 @@ void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle_id, int32_t value) int32_t old_value = ext->values[needle_id]; ext->values[needle_id] = value; - lv_coord_t r = lv_obj_get_width(gauge) / 2; - lv_coord_t x_ofs = gauge->coords.x1 + r; - lv_coord_t y_ofs = gauge->coords.y1 + r + lv_obj_get_style_pad_top(gauge, LV_GAUGE_PART_MAIN); + lv_style_int_t pad = lv_obj_get_style_pad_inner(gauge, LV_GAUGE_PART_NEEDLE); + lv_style_int_t left = lv_obj_get_style_pad_left(gauge, LV_GAUGE_PART_MAIN); + lv_style_int_t right = lv_obj_get_style_pad_right(gauge, LV_GAUGE_PART_MAIN); + lv_style_int_t top = lv_obj_get_style_pad_top(gauge, LV_GAUGE_PART_MAIN); + lv_coord_t r = (lv_obj_get_width(gauge) - left - right) / 2 - pad; + lv_coord_t x_ofs = gauge->coords.x1 + r + left + pad; + lv_coord_t y_ofs = gauge->coords.y1 + r + top + pad; uint16_t angle = lv_linemeter_get_scale_angle(gauge); int16_t angle_ofs = 90 + (360 - angle) / 2 + lv_gauge_get_angle_offset(gauge); lv_point_t p_mid;