Improve lv_ta focus to cursor

This commit is contained in:
Kiss-Vamosi Gabor
2016-12-30 21:44:41 +01:00
parent 01e4a449c5
commit 5dd285106e

View File

@@ -294,7 +294,11 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
point_t cur_pos;
lv_tas_t * style = lv_obj_get_style(ta);
const font_t * font_p = font_get(style->labels.font);
area_t label_cords;
area_t ta_cords;
lv_label_get_letter_pos(ext->label, pos, &cur_pos);
lv_obj_get_cords(ta, &ta_cords);
lv_obj_get_cords(ext->label, &label_cords);
/*Check the top*/
if(lv_obj_get_y(label_par) + cur_pos.y < 0) {
@@ -302,9 +306,9 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
}
/*Check the bottom*/
if(lv_obj_get_y(label_par) + cur_pos.y + font_get_height(font_p) > lv_obj_get_height(ta)) {
if(label_cords.y1 + cur_pos.y + font_get_height(font_p) + style->pages.scrable_rects.vpad > ta_cords.y2) {
lv_obj_set_y(label_par, -(cur_pos.y - lv_obj_get_height(ta) +
font_get_height(font_p) + style->pages.scrable_rects.vpad * 2));
font_get_height(font_p) + 2 * style->pages.scrable_rects.vpad));
}
lv_obj_inv(ta);