BigW Consortium Gitlab

Commit a3ad4b36 by Gabor Kiss-Vamosi

in lv_objx set functions apply the new value only if it's different from the current

parent 89b5907e
...@@ -110,6 +110,8 @@ lv_obj_t * lv_bar_create(lv_obj_t * par, lv_obj_t * copy) ...@@ -110,6 +110,8 @@ lv_obj_t * lv_bar_create(lv_obj_t * par, lv_obj_t * copy)
void lv_bar_set_value(lv_obj_t * bar, int16_t value) void lv_bar_set_value(lv_obj_t * bar, int16_t value)
{ {
lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar); lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);
if(ext->cur_value == value) return;
ext->cur_value = value > ext->max_value ? ext->max_value : value; ext->cur_value = value > ext->max_value ? ext->max_value : value;
ext->cur_value = ext->cur_value < ext->min_value ? ext->min_value : ext->cur_value; ext->cur_value = ext->cur_value < ext->min_value ? ext->min_value : ext->cur_value;
lv_obj_invalidate(bar); lv_obj_invalidate(bar);
...@@ -125,6 +127,8 @@ void lv_bar_set_value(lv_obj_t * bar, int16_t value) ...@@ -125,6 +127,8 @@ void lv_bar_set_value(lv_obj_t * bar, int16_t value)
void lv_bar_set_value_anim(lv_obj_t * bar, int16_t value, uint16_t anim_time) void lv_bar_set_value_anim(lv_obj_t * bar, int16_t value, uint16_t anim_time)
{ {
lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar); lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);
if(ext->cur_value == value) return;
int16_t new_value; int16_t new_value;
new_value = value > ext->max_value ? ext->max_value : value; new_value = value > ext->max_value ? ext->max_value : value;
new_value = new_value < ext->min_value ? ext->min_value : new_value; new_value = new_value < ext->min_value ? ext->min_value : new_value;
...@@ -157,6 +161,8 @@ void lv_bar_set_value_anim(lv_obj_t * bar, int16_t value, uint16_t anim_time) ...@@ -157,6 +161,8 @@ void lv_bar_set_value_anim(lv_obj_t * bar, int16_t value, uint16_t anim_time)
void lv_bar_set_range(lv_obj_t * bar, int16_t min, int16_t max) void lv_bar_set_range(lv_obj_t * bar, int16_t min, int16_t max)
{ {
lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar); lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);
if(ext->min_value == min && ext->max_value == max) return;
ext->max_value = max; ext->max_value = max;
ext->min_value = min; ext->min_value = min;
if(ext->cur_value > max) { if(ext->cur_value > max) {
......
...@@ -159,6 +159,7 @@ lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color) ...@@ -159,6 +159,7 @@ lv_chart_series_t * lv_chart_add_series(lv_obj_t * chart, lv_color_t color)
void lv_chart_set_div_line_count(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv) void lv_chart_set_div_line_count(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->hdiv_cnt == hdiv && ext->vdiv_cnt == vdiv) return;
ext->hdiv_cnt = hdiv; ext->hdiv_cnt = hdiv;
ext->vdiv_cnt = vdiv; ext->vdiv_cnt = vdiv;
...@@ -175,6 +176,7 @@ void lv_chart_set_div_line_count(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv) ...@@ -175,6 +176,7 @@ void lv_chart_set_div_line_count(lv_obj_t * chart, uint8_t hdiv, uint8_t vdiv)
void lv_chart_set_range(lv_obj_t * chart, lv_coord_t ymin, lv_coord_t ymax) void lv_chart_set_range(lv_obj_t * chart, lv_coord_t ymin, lv_coord_t ymax)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->ymin == ymin && ext->ymax == ymax) return;
ext->ymin = ymin; ext->ymin = ymin;
ext->ymax = ymax; ext->ymax = ymax;
...@@ -190,6 +192,8 @@ void lv_chart_set_range(lv_obj_t * chart, lv_coord_t ymin, lv_coord_t ymax) ...@@ -190,6 +192,8 @@ void lv_chart_set_range(lv_obj_t * chart, lv_coord_t ymin, lv_coord_t ymax)
void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type) void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->type == type) return;
ext->type = type; ext->type = type;
lv_chart_refresh(chart); lv_chart_refresh(chart);
...@@ -203,6 +207,8 @@ void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type) ...@@ -203,6 +207,8 @@ void lv_chart_set_type(lv_obj_t * chart, lv_chart_type_t type)
void lv_chart_set_point_count(lv_obj_t * chart, uint16_t point_cnt) void lv_chart_set_point_count(lv_obj_t * chart, uint16_t point_cnt)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->point_cnt == point_cnt) return;
lv_chart_series_t *ser; lv_chart_series_t *ser;
uint16_t point_cnt_old = ext->point_cnt; uint16_t point_cnt_old = ext->point_cnt;
uint16_t i; uint16_t i;
...@@ -233,6 +239,8 @@ void lv_chart_set_point_count(lv_obj_t * chart, uint16_t point_cnt) ...@@ -233,6 +239,8 @@ void lv_chart_set_point_count(lv_obj_t * chart, uint16_t point_cnt)
void lv_chart_set_series_opa(lv_obj_t * chart, lv_opa_t opa) void lv_chart_set_series_opa(lv_obj_t * chart, lv_opa_t opa)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->series.opa == opa) return;
ext->series.opa = opa; ext->series.opa = opa;
lv_obj_invalidate(chart); lv_obj_invalidate(chart);
} }
...@@ -245,6 +253,8 @@ void lv_chart_set_series_opa(lv_obj_t * chart, lv_opa_t opa) ...@@ -245,6 +253,8 @@ void lv_chart_set_series_opa(lv_obj_t * chart, lv_opa_t opa)
void lv_chart_set_series_width(lv_obj_t * chart, lv_coord_t width) void lv_chart_set_series_width(lv_obj_t * chart, lv_coord_t width)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->series.width == width) return;
ext->series.width = width; ext->series.width = width;
lv_obj_invalidate(chart); lv_obj_invalidate(chart);
} }
...@@ -256,7 +266,10 @@ void lv_chart_set_series_width(lv_obj_t * chart, lv_coord_t width) ...@@ -256,7 +266,10 @@ void lv_chart_set_series_width(lv_obj_t * chart, lv_coord_t width)
void lv_chart_set_series_darking(lv_obj_t * chart, lv_opa_t dark_eff) void lv_chart_set_series_darking(lv_obj_t * chart, lv_opa_t dark_eff)
{ {
lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart); lv_chart_ext_t * ext = lv_obj_get_ext_attr(chart);
if(ext->series.dark == dark_eff) return;
ext->series.dark = dark_eff; ext->series.dark = dark_eff;
lv_obj_invalidate(chart);
} }
/** /**
......
...@@ -113,6 +113,8 @@ lv_obj_t * lv_cont_create(lv_obj_t * par, lv_obj_t * copy) ...@@ -113,6 +113,8 @@ lv_obj_t * lv_cont_create(lv_obj_t * par, lv_obj_t * copy)
void lv_cont_set_layout(lv_obj_t * cont, lv_layout_t layout) void lv_cont_set_layout(lv_obj_t * cont, lv_layout_t layout)
{ {
lv_cont_ext_t * ext = lv_obj_get_ext_attr(cont); lv_cont_ext_t * ext = lv_obj_get_ext_attr(cont);
if(ext->layout == layout) return;
ext->layout = layout; ext->layout = layout;
/*Send a signal to refresh the layout*/ /*Send a signal to refresh the layout*/
...@@ -131,6 +133,8 @@ void lv_cont_set_fit(lv_obj_t * cont, bool hor_en, bool ver_en) ...@@ -131,6 +133,8 @@ void lv_cont_set_fit(lv_obj_t * cont, bool hor_en, bool ver_en)
{ {
lv_obj_invalidate(cont); lv_obj_invalidate(cont);
lv_cont_ext_t * ext = lv_obj_get_ext_attr(cont); lv_cont_ext_t * ext = lv_obj_get_ext_attr(cont);
if(ext->hor_fit == hor_en && ext->ver_fit == ver_en) return;
ext->hor_fit = hor_en == false ? 0 : 1; ext->hor_fit = hor_en == false ? 0 : 1;
ext->ver_fit = ver_en == false ? 0 : 1; ext->ver_fit = ver_en == false ? 0 : 1;
......
...@@ -172,6 +172,7 @@ void lv_ddlist_set_options(lv_obj_t * ddlist, const char * options) ...@@ -172,6 +172,7 @@ void lv_ddlist_set_options(lv_obj_t * ddlist, const char * options)
void lv_ddlist_set_selected(lv_obj_t * ddlist, uint16_t sel_opt) void lv_ddlist_set_selected(lv_obj_t * ddlist, uint16_t sel_opt)
{ {
lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist); lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
if(ext->sel_opt_id == sel_opt) return;
ext->sel_opt_id = sel_opt < ext->option_cnt ? sel_opt : ext->option_cnt - 1; ext->sel_opt_id = sel_opt < ext->option_cnt ? sel_opt : ext->option_cnt - 1;
...@@ -203,6 +204,8 @@ void lv_ddlist_set_action(lv_obj_t * ddlist, lv_action_t action) ...@@ -203,6 +204,8 @@ void lv_ddlist_set_action(lv_obj_t * ddlist, lv_action_t action)
void lv_ddlist_set_fix_height(lv_obj_t * ddlist, lv_coord_t h) void lv_ddlist_set_fix_height(lv_obj_t * ddlist, lv_coord_t h)
{ {
lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist); lv_ddlist_ext_t * ext = lv_obj_get_ext_attr(ddlist);
if(ext->fix_height == h) return;
ext->fix_height = h; ext->fix_height = h;
lv_ddlist_refr_size(ddlist, false); lv_ddlist_refr_size(ddlist, false);
...@@ -218,7 +221,6 @@ void lv_ddlist_set_hor_fit(lv_obj_t * ddlist, bool fit_en) ...@@ -218,7 +221,6 @@ void lv_ddlist_set_hor_fit(lv_obj_t * ddlist, bool fit_en)
lv_cont_set_fit(ddlist, fit_en, lv_cont_get_ver_fit(ddlist)); lv_cont_set_fit(ddlist, fit_en, lv_cont_get_ver_fit(ddlist));
lv_page_set_scrl_fit(ddlist, fit_en, lv_page_get_scrl_fit_ver(ddlist)); lv_page_set_scrl_fit(ddlist, fit_en, lv_page_get_scrl_fit_ver(ddlist));
lv_ddlist_refr_size(ddlist, false); lv_ddlist_refr_size(ddlist, false);
} }
......
...@@ -127,20 +127,24 @@ lv_obj_t * lv_gauge_create(lv_obj_t * par, lv_obj_t * copy) ...@@ -127,20 +127,24 @@ lv_obj_t * lv_gauge_create(lv_obj_t * par, lv_obj_t * copy)
void lv_gauge_set_needle_count(lv_obj_t * gauge, uint8_t needle_cnt, const lv_color_t * colors) void lv_gauge_set_needle_count(lv_obj_t * gauge, uint8_t needle_cnt, const lv_color_t * colors)
{ {
lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge); lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);
if(ext->values != NULL) {
lv_mem_free(ext->values);
ext->values = NULL;
}
ext->values = lv_mem_realloc(ext->values, needle_cnt * sizeof(int16_t)); if(ext->needle_count != needle_cnt) {
if(ext->values != NULL) {
lv_mem_free(ext->values);
ext->values = NULL;
}
int16_t min = lv_gauge_get_min_value(gauge); ext->values = lv_mem_realloc(ext->values, needle_cnt * sizeof(int16_t));
uint8_t n;
for(n = ext->needle_count; n < needle_cnt; n++) { int16_t min = lv_gauge_get_min_value(gauge);
ext->values[n] = min; uint8_t n;
for(n = ext->needle_count; n < needle_cnt; n++) {
ext->values[n] = min;
}
ext->needle_count = needle_cnt;
} }
ext->needle_count = needle_cnt;
ext->needle_colors = colors; ext->needle_colors = colors;
lv_obj_invalidate(gauge); lv_obj_invalidate(gauge);
} }
...@@ -156,6 +160,8 @@ void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle_id, int16_t value) ...@@ -156,6 +160,8 @@ void lv_gauge_set_value(lv_obj_t * gauge, uint8_t needle_id, int16_t value)
lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge); lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);
if(needle_id >= ext->needle_count) return; if(needle_id >= ext->needle_count) return;
if(ext->values[needle_id] == value) return;
int16_t min = lv_gauge_get_min_value(gauge); int16_t min = lv_gauge_get_min_value(gauge);
int16_t max = lv_gauge_get_max_value(gauge); int16_t max = lv_gauge_get_max_value(gauge);
...@@ -183,6 +189,7 @@ void lv_gauge_set_scale(lv_obj_t * gauge, uint16_t angle, uint8_t line_cnt, uint ...@@ -183,6 +189,7 @@ void lv_gauge_set_scale(lv_obj_t * gauge, uint16_t angle, uint8_t line_cnt, uint
lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge); lv_gauge_ext_t * ext = lv_obj_get_ext_attr(gauge);
ext->label_count = label_cnt; ext->label_count = label_cnt;
lv_obj_invalidate(gauge);
} }
/*===================== /*=====================
......
...@@ -146,6 +146,7 @@ void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta) ...@@ -146,6 +146,7 @@ void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta)
lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb); lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
lv_cursor_type_t cur_type; lv_cursor_type_t cur_type;
/*Hide the cursor of the old Text area if cursor management is enabled*/
if(ext->ta && ext->cursor_mng) { if(ext->ta && ext->cursor_mng) {
cur_type = lv_ta_get_cursor_type(ext->ta); cur_type = lv_ta_get_cursor_type(ext->ta);
lv_ta_set_cursor_type(ext->ta, cur_type | LV_CURSOR_HIDDEN); lv_ta_set_cursor_type(ext->ta, cur_type | LV_CURSOR_HIDDEN);
...@@ -153,6 +154,7 @@ void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta) ...@@ -153,6 +154,7 @@ void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta)
ext->ta = ta; ext->ta = ta;
/*Show the cursor of the new Text area if cursor management is enabled*/
if(ext->ta && ext->cursor_mng) { if(ext->ta && ext->cursor_mng) {
cur_type = lv_ta_get_cursor_type(ext->ta); cur_type = lv_ta_get_cursor_type(ext->ta);
lv_ta_set_cursor_type(ext->ta, cur_type & (~LV_CURSOR_HIDDEN)); lv_ta_set_cursor_type(ext->ta, cur_type & (~LV_CURSOR_HIDDEN));
...@@ -167,6 +169,8 @@ void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta) ...@@ -167,6 +169,8 @@ void lv_kb_set_ta(lv_obj_t * kb, lv_obj_t * ta)
void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode) void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode)
{ {
lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb); lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
if(ext->mode == mode) return;
ext->mode = mode; ext->mode = mode;
if(mode == LV_KB_MODE_TEXT) lv_btnm_set_map(kb, kb_map_lc); if(mode == LV_KB_MODE_TEXT) lv_btnm_set_map(kb, kb_map_lc);
else if(mode == LV_KB_MODE_NUM) lv_btnm_set_map(kb, kb_map_num); else if(mode == LV_KB_MODE_NUM) lv_btnm_set_map(kb, kb_map_num);
...@@ -181,6 +185,8 @@ void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode) ...@@ -181,6 +185,8 @@ void lv_kb_set_mode(lv_obj_t * kb, lv_kb_mode_t mode)
void lv_kb_set_cursor_manage(lv_obj_t * kb, bool en) void lv_kb_set_cursor_manage(lv_obj_t * kb, bool en)
{ {
lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb); lv_kb_ext_t * ext = lv_obj_get_ext_attr(kb);
if(ext->cursor_mng == en) return;
ext->cursor_mng = en == false? 0 : 1; ext->cursor_mng = en == false? 0 : 1;
if(ext->ta) { if(ext->ta) {
......
...@@ -253,6 +253,7 @@ void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode) ...@@ -253,6 +253,7 @@ void lv_label_set_long_mode(lv_obj_t * label, lv_label_long_mode_t long_mode)
void lv_label_set_align(lv_obj_t *label, lv_label_align_t align) void lv_label_set_align(lv_obj_t *label, lv_label_align_t align)
{ {
lv_label_ext_t *ext = lv_obj_get_ext_attr(label); lv_label_ext_t *ext = lv_obj_get_ext_attr(label);
if(ext->align == align) return;
ext->align = align; ext->align = align;
...@@ -268,6 +269,7 @@ void lv_label_set_align(lv_obj_t *label, lv_label_align_t align) ...@@ -268,6 +269,7 @@ void lv_label_set_align(lv_obj_t *label, lv_label_align_t align)
void lv_label_set_recolor(lv_obj_t * label, bool recolor_en) void lv_label_set_recolor(lv_obj_t * label, bool recolor_en)
{ {
lv_label_ext_t * ext = lv_obj_get_ext_attr(label); lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
if(ext->recolor == recolor_en) return;
ext->recolor = recolor_en == false ? 0 : 1; ext->recolor = recolor_en == false ? 0 : 1;
...@@ -282,6 +284,8 @@ void lv_label_set_recolor(lv_obj_t * label, bool recolor_en) ...@@ -282,6 +284,8 @@ void lv_label_set_recolor(lv_obj_t * label, bool recolor_en)
void lv_label_set_no_break(lv_obj_t * label, bool no_break_en) void lv_label_set_no_break(lv_obj_t * label, bool no_break_en)
{ {
lv_label_ext_t * ext = lv_obj_get_ext_attr(label); lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
if(ext->no_break == no_break_en) return;
ext->no_break = no_break_en == false ? 0 : 1; ext->no_break = no_break_en == false ? 0 : 1;
lv_label_refr_text(label); lv_label_refr_text(label);
...@@ -295,6 +299,8 @@ void lv_label_set_no_break(lv_obj_t * label, bool no_break_en) ...@@ -295,6 +299,8 @@ void lv_label_set_no_break(lv_obj_t * label, bool no_break_en)
void lv_label_set_body_draw(lv_obj_t *label, bool body_en) void lv_label_set_body_draw(lv_obj_t *label, bool body_en)
{ {
lv_label_ext_t * ext = lv_obj_get_ext_attr(label); lv_label_ext_t * ext = lv_obj_get_ext_attr(label);
if(ext->body_draw == body_en) return;
ext->body_draw = body_en == false ? 0 : 1; ext->body_draw = body_en == false ? 0 : 1;
lv_obj_refresh_ext_size(label); lv_obj_refresh_ext_size(label);
...@@ -310,6 +316,8 @@ void lv_label_set_body_draw(lv_obj_t *label, bool body_en) ...@@ -310,6 +316,8 @@ void lv_label_set_body_draw(lv_obj_t *label, bool body_en)
void lv_label_set_anim_speed(lv_obj_t *label, uint16_t anim_speed) void lv_label_set_anim_speed(lv_obj_t *label, uint16_t anim_speed)
{ {
lv_label_ext_t *ext = lv_obj_get_ext_attr(label); lv_label_ext_t *ext = lv_obj_get_ext_attr(label);
if(ext->anim_speed == anim_speed) return;
ext->anim_speed = anim_speed; ext->anim_speed = anim_speed;
if(ext->long_mode == LV_LABEL_LONG_ROLL || ext->long_mode == LV_LABEL_LONG_SCROLL) { if(ext->long_mode == LV_LABEL_LONG_ROLL || ext->long_mode == LV_LABEL_LONG_SCROLL) {
......
...@@ -104,6 +104,8 @@ void lv_led_set_bright(lv_obj_t * led, uint8_t bright) ...@@ -104,6 +104,8 @@ void lv_led_set_bright(lv_obj_t * led, uint8_t bright)
{ {
/*Set the brightness*/ /*Set the brightness*/
lv_led_ext_t * ext = lv_obj_get_ext_attr(led); lv_led_ext_t * ext = lv_obj_get_ext_attr(led);
if(ext->bright == bright) return;
ext->bright = bright; ext->bright = bright;
/*Invalidate the object there fore it will be redrawn*/ /*Invalidate the object there fore it will be redrawn*/
......
...@@ -129,6 +129,7 @@ void lv_line_set_points(lv_obj_t * line, const lv_point_t * point_a, uint16_t po ...@@ -129,6 +129,7 @@ void lv_line_set_points(lv_obj_t * line, const lv_point_t * point_a, uint16_t po
void lv_line_set_auto_size(lv_obj_t * line, bool autosize_en) void lv_line_set_auto_size(lv_obj_t * line, bool autosize_en)
{ {
lv_line_ext_t * ext = lv_obj_get_ext_attr(line); lv_line_ext_t * ext = lv_obj_get_ext_attr(line);
if(ext->auto_size == autosize_en) return;
ext->auto_size = autosize_en == false ? 0 : 1; ext->auto_size = autosize_en == false ? 0 : 1;
...@@ -146,6 +147,7 @@ void lv_line_set_auto_size(lv_obj_t * line, bool autosize_en) ...@@ -146,6 +147,7 @@ void lv_line_set_auto_size(lv_obj_t * line, bool autosize_en)
void lv_line_set_y_invert(lv_obj_t * line, bool yinv_en) void lv_line_set_y_invert(lv_obj_t * line, bool yinv_en)
{ {
lv_line_ext_t * ext = lv_obj_get_ext_attr(line); lv_line_ext_t * ext = lv_obj_get_ext_attr(line);
if(ext->y_inv == yinv_en) return;
ext->y_inv = yinv_en == false ? 0 : 1; ext->y_inv = yinv_en == false ? 0 : 1;
......
...@@ -211,6 +211,8 @@ void lv_list_set_anim_time(lv_obj_t *list, uint16_t anim_time) ...@@ -211,6 +211,8 @@ void lv_list_set_anim_time(lv_obj_t *list, uint16_t anim_time)
#if USE_LV_ANIMATION == 0 #if USE_LV_ANIMATION == 0
anim_time = 0; anim_time = 0;
#endif #endif
if(ext->anim_time == anim_time) return;
ext->anim_time = anim_time; ext->anim_time = anim_time;
} }
......
...@@ -112,8 +112,10 @@ lv_obj_t * lv_lmeter_create(lv_obj_t * par, lv_obj_t * copy) ...@@ -112,8 +112,10 @@ lv_obj_t * lv_lmeter_create(lv_obj_t * par, lv_obj_t * copy)
*/ */
void lv_lmeter_set_value(lv_obj_t *lmeter, int16_t value) void lv_lmeter_set_value(lv_obj_t *lmeter, int16_t value)
{ {
lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter); lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
ext->cur_value = value > ext->max_value ? ext->max_value : value; if(ext->cur_value == value) return;
ext->cur_value = value > ext->max_value ? ext->max_value : value;
ext->cur_value = ext->cur_value < ext->min_value ? ext->min_value : ext->cur_value; ext->cur_value = ext->cur_value < ext->min_value ? ext->min_value : ext->cur_value;
lv_obj_invalidate(lmeter); lv_obj_invalidate(lmeter);
} }
...@@ -127,6 +129,8 @@ void lv_lmeter_set_value(lv_obj_t *lmeter, int16_t value) ...@@ -127,6 +129,8 @@ void lv_lmeter_set_value(lv_obj_t *lmeter, int16_t value)
void lv_lmeter_set_range(lv_obj_t *lmeter, int16_t min, int16_t max) void lv_lmeter_set_range(lv_obj_t *lmeter, int16_t min, int16_t max)
{ {
lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter); lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
if(ext->min_value == min && ext->max_value == max) return;
ext->max_value = max; ext->max_value = max;
ext->min_value = min; ext->min_value = min;
if(ext->cur_value > max) { if(ext->cur_value > max) {
...@@ -149,6 +153,8 @@ void lv_lmeter_set_range(lv_obj_t *lmeter, int16_t min, int16_t max) ...@@ -149,6 +153,8 @@ void lv_lmeter_set_range(lv_obj_t *lmeter, int16_t min, int16_t max)
void lv_lmeter_set_scale(lv_obj_t * lmeter, uint16_t angle, uint8_t line_cnt) void lv_lmeter_set_scale(lv_obj_t * lmeter, uint16_t angle, uint8_t line_cnt)
{ {
lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter); lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
if(ext->scale_angle == angle && ext->line_cnt == line_cnt) return;
ext->scale_angle = angle; ext->scale_angle = angle;
ext->line_cnt = line_cnt; ext->line_cnt = line_cnt;
......
...@@ -191,6 +191,7 @@ void lv_mbox_set_anim_time(lv_obj_t * mbox, uint16_t anim_time) ...@@ -191,6 +191,7 @@ void lv_mbox_set_anim_time(lv_obj_t * mbox, uint16_t anim_time)
#if USE_LV_ANIMATION == 0 #if USE_LV_ANIMATION == 0
anim_time = 0; anim_time = 0;
#endif #endif
ext->anim_time = anim_time; ext->anim_time = anim_time;
} }
......
...@@ -170,6 +170,8 @@ void lv_page_set_pr_action(lv_obj_t * page, lv_action_t pr_action) ...@@ -170,6 +170,8 @@ void lv_page_set_pr_action(lv_obj_t * page, lv_action_t pr_action)
void lv_page_set_sb_mode(lv_obj_t * page, lv_sb_mode_t sb_mode) void lv_page_set_sb_mode(lv_obj_t * page, lv_sb_mode_t sb_mode)
{ {
lv_page_ext_t * ext = lv_obj_get_ext_attr(page); lv_page_ext_t * ext = lv_obj_get_ext_attr(page);
if(ext->sb.mode == sb_mode) return;
ext->sb.mode = sb_mode; ext->sb.mode = sb_mode;
ext->sb.hor_draw = 0; ext->sb.hor_draw = 0;
ext->sb.ver_draw = 0; ext->sb.ver_draw = 0;
......
...@@ -125,6 +125,9 @@ void lv_roller_set_selected(lv_obj_t *roller, uint16_t sel_opt, bool anim_en) ...@@ -125,6 +125,9 @@ void lv_roller_set_selected(lv_obj_t *roller, uint16_t sel_opt, bool anim_en)
#if USE_LV_ANIMATION == 0 #if USE_LV_ANIMATION == 0
anim_en = false; anim_en = false;
#endif #endif
if(lv_roller_get_selected(roller) == sel_opt) return;
lv_ddlist_set_selected(roller, sel_opt); lv_ddlist_set_selected(roller, sel_opt);
refr_position(roller, anim_en); refr_position(roller, anim_en);
} }
......
...@@ -127,6 +127,8 @@ void lv_slider_set_action(lv_obj_t * slider, lv_action_t action) ...@@ -127,6 +127,8 @@ void lv_slider_set_action(lv_obj_t * slider, lv_action_t action)
void lv_slider_set_knob_in(lv_obj_t * slider, bool in) void lv_slider_set_knob_in(lv_obj_t * slider, bool in)
{ {
lv_slider_ext_t * ext = lv_obj_get_ext_attr(slider); lv_slider_ext_t * ext = lv_obj_get_ext_attr(slider);
if(ext->knob_in == in) return;
ext->knob_in = in == false ? 0 : 1; ext->knob_in = in == false ? 0 : 1;
lv_obj_invalidate(slider); lv_obj_invalidate(slider);
} }
......
...@@ -112,6 +112,8 @@ lv_obj_t * lv_sw_create(lv_obj_t * par, lv_obj_t * copy) ...@@ -112,6 +112,8 @@ lv_obj_t * lv_sw_create(lv_obj_t * par, lv_obj_t * copy)
*/ */
void lv_sw_on(lv_obj_t *sw) void lv_sw_on(lv_obj_t *sw)
{ {
if(lv_sw_get_state(sw)) return; /*Do nothing is already turned on*/
lv_sw_ext_t *ext = lv_obj_get_ext_attr(sw); lv_sw_ext_t *ext = lv_obj_get_ext_attr(sw);
lv_slider_set_value(sw, 1); lv_slider_set_value(sw, 1);
lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB,ext->style_knob_on); lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB,ext->style_knob_on);
...@@ -123,6 +125,8 @@ void lv_sw_on(lv_obj_t *sw) ...@@ -123,6 +125,8 @@ void lv_sw_on(lv_obj_t *sw)
*/ */
void lv_sw_off(lv_obj_t *sw) void lv_sw_off(lv_obj_t *sw)
{ {
if(!lv_sw_get_state(sw)) return; /*Do nothing is already turned off*/
lv_sw_ext_t *ext = lv_obj_get_ext_attr(sw); lv_sw_ext_t *ext = lv_obj_get_ext_attr(sw);
lv_slider_set_value(sw, 0); lv_slider_set_value(sw, 0);
lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB,ext->style_knob_off); lv_slider_set_style(sw, LV_SLIDER_STYLE_KNOB,ext->style_knob_off);
......
...@@ -347,6 +347,8 @@ void lv_ta_set_text(lv_obj_t * ta, const char * txt) ...@@ -347,6 +347,8 @@ void lv_ta_set_text(lv_obj_t * ta, const char * txt)
void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos) void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
{ {
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta); lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
if(ext->cursor.pos == pos) return;
uint16_t len = lv_txt_get_length(lv_label_get_text(ext->label)); uint16_t len = lv_txt_get_length(lv_label_get_text(ext->label));
if(pos < 0) pos = len + pos; if(pos < 0) pos = len + pos;
...@@ -419,6 +421,8 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos) ...@@ -419,6 +421,8 @@ void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos)
void lv_ta_set_cursor_type(lv_obj_t * ta, lv_cursor_type_t cur_type) void lv_ta_set_cursor_type(lv_obj_t * ta, lv_cursor_type_t cur_type)
{ {
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta); lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
if(ext->cursor.type == cur_type) return;
ext->cursor.type = cur_type; ext->cursor.type = cur_type;
lv_obj_invalidate(ta); lv_obj_invalidate(ta);
} }
...@@ -431,6 +435,7 @@ void lv_ta_set_cursor_type(lv_obj_t * ta, lv_cursor_type_t cur_type) ...@@ -431,6 +435,7 @@ void lv_ta_set_cursor_type(lv_obj_t * ta, lv_cursor_type_t cur_type)
void lv_ta_set_pwd_mode(lv_obj_t * ta, bool pwd_en) void lv_ta_set_pwd_mode(lv_obj_t * ta, bool pwd_en)
{ {
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta); lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
if(ext->pwd_mode == pwd_en) return;
/*Pwd mode is now enabled*/ /*Pwd mode is now enabled*/
if(ext->pwd_mode == 0 && pwd_en != false) { if(ext->pwd_mode == 0 && pwd_en != false) {
...@@ -464,8 +469,10 @@ void lv_ta_set_pwd_mode(lv_obj_t * ta, bool pwd_en) ...@@ -464,8 +469,10 @@ void lv_ta_set_pwd_mode(lv_obj_t * ta, bool pwd_en)
*/ */
void lv_ta_set_one_line(lv_obj_t * ta, bool en) void lv_ta_set_one_line(lv_obj_t * ta, bool en)
{ {
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
if(ext->one_line == en) return;
if(en != false) { if(en != false) {
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
lv_style_t * style_ta = lv_obj_get_style(ta); lv_style_t * style_ta = lv_obj_get_style(ta);
lv_style_t * style_scrl = lv_obj_get_style(lv_page_get_scrl(ta)); lv_style_t * style_scrl = lv_obj_get_style(lv_page_get_scrl(ta));
lv_style_t * style_label = lv_obj_get_style(ext->label); lv_style_t * style_label = lv_obj_get_style(ext->label);
...@@ -478,7 +485,6 @@ void lv_ta_set_one_line(lv_obj_t * ta, bool en) ...@@ -478,7 +485,6 @@ void lv_ta_set_one_line(lv_obj_t * ta, bool en)
lv_label_set_no_break(ext->label, true); lv_label_set_no_break(ext->label, true);
lv_obj_set_pos(lv_page_get_scrl(ta), style_ta->body.padding.hor, style_ta->body.padding.ver); lv_obj_set_pos(lv_page_get_scrl(ta), style_ta->body.padding.hor, style_ta->body.padding.ver);
} else { } else {
lv_ta_ext_t * ext = lv_obj_get_ext_attr(ta);
lv_style_t * style_ta = lv_obj_get_style(ta); lv_style_t * style_ta = lv_obj_get_style(ta);
ext->one_line = 0; ext->one_line = 0;
......
...@@ -241,6 +241,8 @@ void lv_tabview_set_tab_act(lv_obj_t * tabview, uint16_t id, bool anim_en) ...@@ -241,6 +241,8 @@ void lv_tabview_set_tab_act(lv_obj_t * tabview, uint16_t id, bool anim_en)
anim_en = false; anim_en = false;
#endif #endif
lv_tabview_ext_t * ext = lv_obj_get_ext_attr(tabview); lv_tabview_ext_t * ext = lv_obj_get_ext_attr(tabview);
if(ext->tab_cur == id) return;
lv_style_t * style = lv_obj_get_style(ext->content); lv_style_t * style = lv_obj_get_style(ext->content);
if(id >= ext->tab_cnt) id = ext->tab_cnt - 1; if(id >= ext->tab_cnt) id = ext->tab_cnt - 1;
......
...@@ -207,6 +207,8 @@ void lv_win_set_title(lv_obj_t * win, const char * title) ...@@ -207,6 +207,8 @@ void lv_win_set_title(lv_obj_t * win, const char * title)
void lv_win_set_btn_size(lv_obj_t * win, lv_coord_t size) void lv_win_set_btn_size(lv_obj_t * win, lv_coord_t size)
{ {
lv_win_ext_t * ext = lv_obj_get_ext_attr(win); lv_win_ext_t * ext = lv_obj_get_ext_attr(win);
if(ext->btn_size == size) return;
ext->btn_size = size; ext->btn_size = size;
lv_win_realign(win); lv_win_realign(win);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment