1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-28 07:03:00 +08:00

fix(roller): clip overflowing text

This commit is contained in:
Gabor Kiss-Vamosi 2022-01-15 13:56:39 +01:00
parent 49642d3891
commit 5709528550

View File

@ -528,6 +528,14 @@ static void draw_label(lv_event_t * e)
lv_obj_init_draw_label_dsc(roller, LV_PART_MAIN, &label_draw_dsc);
lv_draw_ctx_t * draw_ctx = lv_event_get_draw_ctx(e);
/*If the roller has shadow or outline it has some ext. draw size
*therefore the label can overflow the roller's boundaries.
*To solve this limit the clip area to the "plain" roller.*/
const lv_area_t * clip_area_ori = draw_ctx->clip_area;
lv_area_t roller_clip_area;
if(!_lv_area_intersect(&roller_clip_area, draw_ctx->clip_area, &roller->coords)) return;
draw_ctx->clip_area = &roller_clip_area;
lv_area_t sel_area;
get_sel_area(roller, &sel_area);
@ -553,6 +561,8 @@ static void draw_label(lv_event_t * e)
lv_draw_label(draw_ctx, &label_draw_dsc, &label_obj->coords, lv_label_get_text(label_obj), NULL);
draw_ctx->clip_area = clip_area_ori;
}
draw_ctx->clip_area = clip_area_ori;
}
static void get_sel_area(lv_obj_t * obj, lv_area_t * sel_area)