From 430c91e40cca46fb23d277f542bfbde5cec3eda1 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 8 Mar 2021 10:22:49 +0100 Subject: [PATCH] fix(table): recalcualte the height only the necesasry rows --- src/lv_widgets/lv_table.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/lv_widgets/lv_table.c b/src/lv_widgets/lv_table.c index 638996532..267803bbb 100644 --- a/src/lv_widgets/lv_table.c +++ b/src/lv_widgets/lv_table.c @@ -36,7 +36,7 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static lv_coord_t get_row_height(lv_obj_t * obj, uint16_t row_id, const lv_font_t * font, lv_coord_t letter_space, lv_coord_t line_space, lv_coord_t cell_left, lv_coord_t cell_right, lv_coord_t cell_top, lv_coord_t cell_bottom); -static void refr_size(lv_obj_t * obj); +static void refr_size(lv_obj_t * obj, uint32_t strat_row); static lv_res_t get_pressed_cell(lv_obj_t * obj, uint16_t * row, uint16_t * col); /********************** @@ -101,7 +101,7 @@ void lv_table_set_cell_value(lv_obj_t * obj, uint16_t row, uint16_t col, const c #endif table->cell_data[cell][0] = ctrl; - refr_size(obj) ; + refr_size(obj, row); } void lv_table_set_cell_value_fmt(lv_obj_t * obj, uint16_t row, uint16_t col, const char * fmt, ...) @@ -172,7 +172,7 @@ void lv_table_set_cell_value_fmt(lv_obj_t * obj, uint16_t row, uint16_t col, con va_end(ap2); table->cell_data[cell][0] = ctrl; - refr_size(obj) ; + refr_size(obj, row); } void lv_table_set_row_cnt(lv_obj_t * obj, uint16_t row_cnt) @@ -198,7 +198,7 @@ void lv_table_set_row_cnt(lv_obj_t * obj, uint16_t row_cnt) lv_memset_00(&table->cell_data[old_cell_cnt], (new_cell_cnt - old_cell_cnt) * sizeof(table->cell_data[0])); } - refr_size(obj) ; + refr_size(obj, 0) ; } void lv_table_set_col_cnt(lv_obj_t * obj, uint16_t col_cnt) @@ -242,7 +242,7 @@ void lv_table_set_col_cnt(lv_obj_t * obj, uint16_t col_cnt) table->cell_data = new_cell_data; - refr_size(obj) ; + refr_size(obj, 0) ; } void lv_table_set_col_width(lv_obj_t * obj, uint16_t col_id, lv_coord_t w) @@ -255,7 +255,7 @@ void lv_table_set_col_width(lv_obj_t * obj, uint16_t col_id, lv_coord_t w) if(col_id >= table->col_cnt) lv_table_set_col_cnt(obj, col_id + 1); table->col_w[col_id] = w; - refr_size(obj) ; + refr_size(obj, 0) ; } void lv_table_add_cell_ctrl(lv_obj_t * obj, uint16_t row, uint16_t col, lv_table_cell_ctrl_t ctrl) @@ -640,7 +640,7 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param) lv_table_t * table = (lv_table_t *)obj; if(sign == LV_SIGNAL_STYLE_CHG) { - refr_size(obj); + refr_size(obj, 0); } else if(sign == LV_SIGNAL_GET_SELF_SIZE) { lv_point_t * p = param; @@ -717,7 +717,7 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param) } -static void refr_size(lv_obj_t * obj) +static void refr_size(lv_obj_t * obj, uint32_t strat_row) { lv_table_t * table = (lv_table_t *)obj; @@ -732,7 +732,7 @@ static void refr_size(lv_obj_t * obj) lv_coord_t line_space = lv_obj_get_style_text_line_space(obj, LV_PART_ITEMS); const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_ITEMS); - for(i = 0; i < table->row_cnt; i++) { + for(i = strat_row; i < table->row_cnt; i++) { table->row_h[i] = get_row_height(obj, i, font, letter_space, line_space, cell_left, cell_right, cell_top, cell_bottom); }