diff --git a/CHANGELOG.md b/CHANGELOG.md index 0947a95b5..6c44410b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,9 @@ - Add `lv_font_free()` function - Frees the memory allocated by the `lv_font_load()` function - Add style caching to reduce acces time of properties with default value +### Bugfixes +- Fix color bleeding on border drawing + ## v7.3.1 (18.08.2020) ### Bugfixes diff --git a/src/lv_core/lv_obj.c b/src/lv_core/lv_obj.c index 3db3ae401..50dc7bf6a 100644 --- a/src/lv_core/lv_obj.c +++ b/src/lv_core/lv_obj.c @@ -3801,7 +3801,7 @@ static lv_design_res_t lv_obj_design(lv_obj_t * obj, const lv_area_t * clip_area lv_draw_rect_dsc_init(&draw_dsc); /*If the border is drawn later disable loading its properties*/ if(lv_obj_get_style_border_post(obj, LV_OBJ_PART_MAIN)) { - draw_dsc.border_opa = LV_OPA_TRANSP; + draw_dsc.border_post = 1; } lv_obj_init_draw_rect_dsc(obj, LV_OBJ_PART_MAIN, &draw_dsc); diff --git a/src/lv_draw/lv_draw_rect.c b/src/lv_draw/lv_draw_rect.c index b4ce5a0b4..08682b789 100644 --- a/src/lv_draw/lv_draw_rect.c +++ b/src/lv_draw/lv_draw_rect.c @@ -391,6 +391,7 @@ LV_ATTRIBUTE_FAST_MEM static void draw_border(const lv_area_t * coords, const lv if(dsc->border_opa <= LV_OPA_MIN) return; if(dsc->border_width == 0) return; if(dsc->border_side == LV_BORDER_SIDE_NONE) return; + if(dsc->border_post) return; int32_t coords_w = lv_area_get_width(coords); int32_t coords_h = lv_area_get_height(coords); diff --git a/src/lv_draw/lv_draw_rect.h b/src/lv_draw/lv_draw_rect.h index 17f4a7248..1d3c4c4f7 100644 --- a/src/lv_draw/lv_draw_rect.h +++ b/src/lv_draw/lv_draw_rect.h @@ -41,6 +41,7 @@ typedef struct { lv_style_int_t border_side; lv_opa_t border_opa; lv_blend_mode_t border_blend_mode; + uint8_t border_post :1; /*There is a border it will be drawn later. */ /*Outline*/ lv_color_t outline_color;