mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-28 07:03:00 +08:00
lv_ta: apply hpad/vpad on cursor position/size
This commit is contained in:
parent
577fc7b528
commit
748009735c
@ -866,6 +866,8 @@ static bool lv_ta_scrling_design(lv_obj_t * scrl, const area_t * mask, lv_design
|
|||||||
cur_style.radius = 0;
|
cur_style.radius = 0;
|
||||||
cur_style.empty = 0;
|
cur_style.empty = 0;
|
||||||
cur_style.opa = OPA_COVER;
|
cur_style.opa = OPA_COVER;
|
||||||
|
cur_style.hpad = 0;
|
||||||
|
cur_style.vpad = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t cur_pos = lv_ta_get_cursor_pos(ta);
|
uint16_t cur_pos = lv_ta_get_cursor_pos(ta);
|
||||||
@ -911,16 +913,16 @@ static bool lv_ta_scrling_design(lv_obj_t * scrl, const area_t * mask, lv_design
|
|||||||
/*Draw he cursor according to the type*/
|
/*Draw he cursor according to the type*/
|
||||||
area_t cur_area;
|
area_t cur_area;
|
||||||
if(ta_ext->cursor_type == LV_TA_CURSOR_LINE) {
|
if(ta_ext->cursor_type == LV_TA_CURSOR_LINE) {
|
||||||
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1 - (cur_style.line_width >> 1) - (cur_style.line_width & 0x1);
|
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1 + cur_style.hpad - (cur_style.line_width >> 1) - (cur_style.line_width & 0x1);
|
||||||
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1;
|
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1 + cur_style.vpad;
|
||||||
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + (cur_style.line_width >> 1);
|
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + cur_style.hpad + (cur_style.line_width >> 1);
|
||||||
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + letter_h;
|
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + cur_style.vpad + letter_h;
|
||||||
lv_draw_rect(&cur_area, mask, &cur_style);
|
lv_draw_rect(&cur_area, mask, &cur_style);
|
||||||
} else if(ta_ext->cursor_type == LV_TA_CURSOR_BLOCK) {
|
} else if(ta_ext->cursor_type == LV_TA_CURSOR_BLOCK) {
|
||||||
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1;
|
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1 - cur_style.hpad;
|
||||||
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1;
|
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1 - cur_style.vpad;
|
||||||
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + letter_w;
|
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + cur_style.hpad + letter_w;
|
||||||
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + letter_h;
|
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + cur_style.vpad + letter_h;
|
||||||
|
|
||||||
lv_draw_rect(&cur_area, mask, &cur_style);
|
lv_draw_rect(&cur_area, mask, &cur_style);
|
||||||
|
|
||||||
@ -933,22 +935,24 @@ static bool lv_ta_scrling_design(lv_obj_t * scrl, const area_t * mask, lv_design
|
|||||||
char letter_buf[8] = {0};
|
char letter_buf[8] = {0};
|
||||||
memcpy(letter_buf, &txt[byte_pos], txt_utf8_size(txt[byte_pos]));
|
memcpy(letter_buf, &txt[byte_pos], txt_utf8_size(txt[byte_pos]));
|
||||||
#endif
|
#endif
|
||||||
|
cur_area.x1 += cur_style.hpad;
|
||||||
|
cur_area.y1 += cur_style.vpad;
|
||||||
lv_draw_label(&cur_area, mask, &cur_style, letter_buf, TXT_FLAG_NONE, 0);
|
lv_draw_label(&cur_area, mask, &cur_style, letter_buf, TXT_FLAG_NONE, 0);
|
||||||
|
|
||||||
} else if(ta_ext->cursor_type == LV_TA_CURSOR_OUTLINE) {
|
} else if(ta_ext->cursor_type == LV_TA_CURSOR_OUTLINE) {
|
||||||
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1;
|
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1 - cur_style.hpad;
|
||||||
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1;
|
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1 - cur_style.vpad;
|
||||||
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + letter_w;
|
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + cur_style.hpad + letter_w;
|
||||||
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + letter_h;
|
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 - cur_style.vpad+ letter_h;
|
||||||
|
|
||||||
cur_style.empty = 1;
|
cur_style.empty = 1;
|
||||||
if(cur_style.bwidth == 0) cur_style.bwidth = 1 * LV_DOWNSCALE; /*Be sure the border will be drawn*/
|
if(cur_style.bwidth == 0) cur_style.bwidth = 1 * LV_DOWNSCALE; /*Be sure the border will be drawn*/
|
||||||
lv_draw_rect(&cur_area, mask, &cur_style);
|
lv_draw_rect(&cur_area, mask, &cur_style);
|
||||||
} else if(ta_ext->cursor_type == LV_TA_CURSOR_UNDERLINE) {
|
} else if(ta_ext->cursor_type == LV_TA_CURSOR_UNDERLINE) {
|
||||||
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1;
|
cur_area.x1 = letter_pos.x + ta_ext->label->cords.x1 + cur_style.hpad;
|
||||||
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1 + letter_h - (cur_style.line_width >> 1);
|
cur_area.y1 = letter_pos.y + ta_ext->label->cords.y1 + cur_style.vpad + letter_h - (cur_style.line_width >> 1);
|
||||||
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + letter_w;
|
cur_area.x2 = letter_pos.x + ta_ext->label->cords.x1 + cur_style.hpad + letter_w;
|
||||||
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + letter_h + (cur_style.line_width >> 1) + (cur_style.line_width & 0x1);
|
cur_area.y2 = letter_pos.y + ta_ext->label->cords.y1 + cur_style.vpad + letter_h + (cur_style.line_width >> 1) + (cur_style.line_width & 0x1);
|
||||||
|
|
||||||
lv_draw_rect(&cur_area, mask, &cur_style);
|
lv_draw_rect(&cur_area, mask, &cur_style);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user