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:
parent
49642d3891
commit
5709528550
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user