support transition on virtual styles too

This commit is contained in:
Gabor Kiss-Vamosi
2020-02-21 16:33:42 +01:00
parent 05b8db0192
commit 78923b6b9b
21 changed files with 259 additions and 209 deletions

View File

@@ -57,6 +57,7 @@ typedef struct _lv_event_temp_data
typedef struct {
lv_obj_t * obj;
lv_style_property_t prop;
uint8_t part;
union {
lv_color_t _color;
lv_style_int_t _int;
@@ -89,8 +90,8 @@ static void opa_scale_anim(lv_obj_t * obj, lv_anim_value_t v);
#endif
static void lv_event_mark_deleted(lv_obj_t * obj);
static void lv_obj_del_async_cb(void * obj);
static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop, lv_state_t prev_state, lv_state_t new_state);
static void trans_del(lv_obj_t * obj, lv_style_property_t prop);
static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop, uint8_t part, lv_state_t prev_state, lv_state_t new_state);
static void trans_del(lv_obj_t * obj, uint8_t part, lv_style_property_t prop);
/**********************
* STATIC VARIABLES
@@ -398,6 +399,8 @@ lv_res_t lv_obj_del(lv_obj_t * obj)
lv_anim_del(obj, NULL);
#endif
trans_del(obj, 0xFF, 0xFF);
/*Delete the user data*/
#if LV_USE_USER_DATA_FREE
LV_USER_DATA_FREE(obj);
@@ -1123,20 +1126,37 @@ void lv_obj_add_style(lv_obj_t * obj, uint8_t part, lv_style_t * style)
}
/**
* Remove all styles from the objects style list. Also reset the local styles
* Reset a style to the default (empty) state.
* Release all used memories and cancel pending related transitions.
* Typically used in `LV_SIGN_CLEAN_UP.
* @param obj pointer to an object
* @param part the part of the object which style list should be reseted.
* E.g. `LV_OBJ_PART_MAIN`, `LV_BTN_PART_MAIN`, `LV_SLIDER_PART_KNOB`
*/
void lv_obj_clean_style_list(lv_obj_t * obj, uint8_t part)
{
lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part);
if(style_dsc == NULL) {
LV_LOG_WARN("lv_obj_clean_style_list: can't find style with `part`");
return;
}
lv_style_list_reset(style_dsc);
trans_del(obj, part, 0xFF);
}
/**
* Reset a style to the default (empty) state.
* Release all used memories and cancel pending related transitions.
* Also notifies the object about the style change.
* @param obj pointer to an object
* @param part the part of the object which style list should be reseted.
* E.g. `LV_OBJ_PART_MAIN`, `LV_BTN_PART_MAIN`, `LV_SLIDER_PART_KNOB`
*/
void lv_obj_reset_style_list(lv_obj_t * obj, uint8_t part)
{
lv_style_list_t * style_dsc = lv_obj_get_style_list(obj, part);
if(style_dsc == NULL) {
LV_LOG_WARN("lv_obj_clean_styles: can't find style with `part`");
return;
}
lv_style_list_reset(style_dsc);
lv_obj_clean_style_list(obj, part);
lv_obj_refresh_style(obj);
}
@@ -1465,30 +1485,36 @@ void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state)
lv_state_t prev_state = obj->state_dsc.act;
obj->state_dsc.act = new_state;
lv_style_int_t time = lv_obj_get_style_trans_time(obj, LV_OBJ_PART_MAIN);
lv_style_property_t props[LV_STYLE_TRANS_NUM_MAX];
lv_style_int_t delay = lv_obj_get_style_trans_delay(obj, LV_OBJ_PART_MAIN);
lv_anim_path_cb_t path = lv_obj_get_style_trans_path(obj, LV_OBJ_PART_MAIN);
props[0] = lv_obj_get_style_trans_prop1(obj, LV_OBJ_PART_MAIN);
props[1] = lv_obj_get_style_trans_prop2(obj, LV_OBJ_PART_MAIN);
props[2] = lv_obj_get_style_trans_prop3(obj, LV_OBJ_PART_MAIN);
props[3] = lv_obj_get_style_trans_prop4(obj, LV_OBJ_PART_MAIN);
props[4] = lv_obj_get_style_trans_prop5(obj, LV_OBJ_PART_MAIN);
props[5] = lv_obj_get_style_trans_prop6(obj, LV_OBJ_PART_MAIN);
uint8_t part;
for(part = 0; part < _LV_OBJ_PART_REAL_LAST; part++) {
lv_style_list_t * style_list = lv_obj_get_style_list(obj, part);
if(style_list == NULL) break; /*No more style lists*/
if(style_list->ignore_trans) continue;
lv_style_int_t time = lv_obj_get_style_trans_time(obj, part);
lv_style_property_t props[LV_STYLE_TRANS_NUM_MAX];
lv_style_int_t delay = lv_obj_get_style_trans_delay(obj, part);
lv_anim_path_cb_t path = lv_obj_get_style_trans_path(obj, part);
props[0] = lv_obj_get_style_trans_prop1(obj, part);
props[1] = lv_obj_get_style_trans_prop2(obj, part);
props[2] = lv_obj_get_style_trans_prop3(obj, part);
props[3] = lv_obj_get_style_trans_prop4(obj, part);
props[4] = lv_obj_get_style_trans_prop5(obj, part);
props[5] = lv_obj_get_style_trans_prop6(obj, part);
lv_style_list_t * style_list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
uint8_t i;
for(i = 0; i < LV_STYLE_TRANS_NUM_MAX; i++) {
if(props[i] != 0) {
lv_style_list_add_trans_style(style_list);
lv_anim_trans_t * tr = trans_create(obj, props[i], prev_state, new_state);
lv_anim_trans_t * tr = trans_create(obj, props[i], part, prev_state, new_state);
/*If there is a pending anim for this property remove it*/
if(tr) {
tr->obj = obj;
tr->prop = props[i];
tr->part = part;
if(time == 0) {
trans_anim_cb(tr, 255);
@@ -1511,29 +1537,30 @@ void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state)
}
#endif
}
}
lv_obj_refresh_style(obj);
}
static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop, lv_state_t prev_state, lv_state_t new_state)
static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop, uint8_t part, lv_state_t prev_state, lv_state_t new_state)
{
lv_anim_trans_t * tr;
lv_style_list_t * style_list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
lv_style_list_t * style_list = lv_obj_get_style_list(obj, part);
lv_style_t * style_trans = lv_style_list_get_trans_style(style_list);
/*Get the previous and current values*/
if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/
style_list->skip_trans = 1;
obj->state_dsc.act = prev_state;
lv_style_int_t int1 = _lv_obj_get_style_int(obj, LV_OBJ_PART_MAIN, prop);
lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop);
obj->state_dsc.act = new_state;
lv_style_int_t int2 = _lv_obj_get_style_int(obj, LV_OBJ_PART_MAIN, prop);
lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop);
style_list->skip_trans = 0;
if(int1 == int2) return NULL;
obj->state_dsc.act = prev_state;
int1 = _lv_obj_get_style_int(obj, LV_OBJ_PART_MAIN, prop);
int1 = _lv_obj_get_style_int(obj, part, prop);
obj->state_dsc.act = new_state;
_lv_style_set_int(style_trans, prop, int1); /*Be sure `trans_style` has a valid value */
@@ -1555,14 +1582,14 @@ static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop,
else if((prop & 0xF) < LV_STYLE_ID_OPA) { /*Color*/
style_list->skip_trans = 1;
obj->state_dsc.act = prev_state;
lv_color_t c1 = _lv_obj_get_style_color(obj, LV_OBJ_PART_MAIN, prop);
lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop);
obj->state_dsc.act = new_state;
lv_color_t c2 = _lv_obj_get_style_color(obj, LV_OBJ_PART_MAIN, prop);
lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop);
style_list->skip_trans = 0;
if(c1.full == c2.full) return NULL;
obj->state_dsc.act = prev_state;
c1 = _lv_obj_get_style_color(obj, LV_OBJ_PART_MAIN, prop);
c1 = _lv_obj_get_style_color(obj, part, prop);
obj->state_dsc.act = new_state;
_lv_style_set_color(style_trans, prop, c1); /*Be sure `trans_style` has a valid value */
@@ -1575,15 +1602,15 @@ static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop,
else if((prop & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
style_list->skip_trans = 1;
obj->state_dsc.act = prev_state;
lv_opa_t o1 = _lv_obj_get_style_opa(obj, LV_OBJ_PART_MAIN, prop);
lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop);
obj->state_dsc.act = new_state;
lv_opa_t o2 = _lv_obj_get_style_opa(obj, LV_OBJ_PART_MAIN, prop);
lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop);
style_list->skip_trans = 0;
if(o1 == o2) return NULL;
obj->state_dsc.act = prev_state;
o1 = _lv_obj_get_style_opa(obj, LV_OBJ_PART_MAIN, prop);
o1 = _lv_obj_get_style_opa(obj, part, prop);
obj->state_dsc.act = new_state;
_lv_style_set_opa(style_trans, prop, o1); /*Be sure `trans_style` has a valid value */
@@ -1595,14 +1622,14 @@ static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop,
} else { /*Ptr*/
obj->state_dsc.act = prev_state;
style_list->skip_trans = 1;
const void * p1 = _lv_obj_get_style_ptr(obj, LV_OBJ_PART_MAIN, prop);
const void * p1 = _lv_obj_get_style_ptr(obj, part, prop);
obj->state_dsc.act = new_state;
const void * p2 = _lv_obj_get_style_ptr(obj, LV_OBJ_PART_MAIN, prop);
const void * p2 = _lv_obj_get_style_ptr(obj, part, prop);
style_list->skip_trans = 0;
if(p1 == p2) return NULL;
obj->state_dsc.act = prev_state;
p1 = _lv_obj_get_style_ptr(obj, LV_OBJ_PART_MAIN, prop);
p1 = _lv_obj_get_style_ptr(obj, part, prop);
obj->state_dsc.act = new_state;
_lv_style_set_ptr(style_trans, prop, p1); /*Be sure `trans_style` has a valid value */
@@ -1616,7 +1643,7 @@ static lv_anim_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop,
return tr;
}
static void trans_del(lv_obj_t * obj, lv_style_property_t prop)
static void trans_del(lv_obj_t * obj, uint8_t part, lv_style_property_t prop)
{
lv_anim_trans_t * tr;
lv_anim_trans_t * tr_next;
@@ -1625,7 +1652,7 @@ static void trans_del(lv_obj_t * obj, lv_style_property_t prop)
/*'tr' might be deleted, so get the next object while 'tr' is valid*/
tr_next = lv_ll_get_next(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
if(tr->obj == obj && (prop == tr->prop || prop == 0xFF)) {
if(tr->obj == obj && (part == tr->part || part == 0xFF) && (prop == tr->prop || prop == 0xFF)) {
lv_anim_del(tr, NULL);
lv_ll_remove(&LV_GC_ROOT(_lv_obj_style_trans_ll), tr);
lv_mem_free(tr);
@@ -3379,8 +3406,7 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
}
#endif
else if(sign == LV_SIGNAL_CLEANUP) {
lv_style_list_reset(&obj->style_list);
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
}
return res;
@@ -3550,7 +3576,7 @@ static void base_dir_refr_children(lv_obj_t * obj)
static void trans_anim_cb(lv_anim_trans_t * tr, lv_anim_value_t v)
{
lv_style_list_t * list = lv_obj_get_style_list(tr->obj, LV_OBJ_PART_MAIN);
lv_style_list_t * list = lv_obj_get_style_list(tr->obj, tr->part);
lv_style_t * style = lv_style_list_get_trans_style(list);
if((tr->prop & 0xF) < LV_STYLE_ID_COLOR) { /*Value*/
@@ -3591,21 +3617,21 @@ static void trans_anim_start_cb(lv_anim_t * a)
/*Init prop to an invalid values to be sure `trans_del` won't delete the just added `tr`*/
tr->prop = 0;
/*Delete the relate transition if any*/
trans_del(tr->obj, prop_tmp);
trans_del(tr->obj, tr->part, prop_tmp);
tr->prop = prop_tmp;
/*Get the previous and current values*/
/*Start the animation from the current value*/
if((prop_tmp & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/
tr->start_value._int = _lv_obj_get_style_int(tr->obj, LV_OBJ_PART_MAIN, prop_tmp);
tr->start_value._int = _lv_obj_get_style_int(tr->obj, tr->part, prop_tmp);
}
else if((prop_tmp & 0xF) < LV_STYLE_ID_OPA) { /*Color*/
tr->start_value._color = _lv_obj_get_style_color(tr->obj, LV_OBJ_PART_MAIN, prop_tmp);
tr->start_value._color = _lv_obj_get_style_color(tr->obj, tr->part, prop_tmp);
}
else if((prop_tmp & 0xF) < LV_STYLE_ID_PTR) { /*Opa*/
tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, LV_OBJ_PART_MAIN, prop_tmp);
tr->start_value._opa = _lv_obj_get_style_opa(tr->obj, tr->part, prop_tmp);
} else { /*Ptr*/
tr->start_value._ptr= _lv_obj_get_style_ptr(tr->obj, LV_OBJ_PART_MAIN, prop_tmp);
tr->start_value._ptr= _lv_obj_get_style_ptr(tr->obj, tr->part, prop_tmp);
}

View File

@@ -487,7 +487,19 @@ void lv_obj_set_ext_click_area(lv_obj_t * obj, lv_coord_t left, lv_coord_t right
void lv_obj_add_style(lv_obj_t * obj, uint8_t part, lv_style_t * style);
/**
* Remove all styles from the objects style list. Also reset the local styles
* Reset a style to the default (empty) state.
* Release all used memories and cancel pending related transitions.
* Typically used in `LV_SIGN_CLEAN_UP.
* @param obj pointer to an object
* @param part the part of the object which style list should be reseted.
* E.g. `LV_OBJ_PART_MAIN`, `LV_BTN_PART_MAIN`, `LV_SLIDER_PART_KNOB`
*/
void lv_obj_clean_style_list(lv_obj_t * obj, uint8_t part);
/**
* Reset a style to the default (empty) state.
* Release all used memories and cancel pending related transitions.
* Also notifies the object about the style change.
* @param obj pointer to an object
* @param part the part of the object which style list should be reseted.
* E.g. `LV_OBJ_PART_MAIN`, `LV_BTN_PART_MAIN`, `LV_SLIDER_PART_KNOB`

View File

@@ -60,7 +60,7 @@ static lv_style_t * get_alloc_local_style(lv_style_list_t * list);
*/
void lv_style_init(lv_style_t * style)
{
style->map = NULL;
memset(style, 0x00, sizeof(lv_style_t));
#if LV_USE_ASSERT_STYLE
style->sentinel = LV_DEBUG_STYLE_SENTINEL_VALUE;
#endif
@@ -136,10 +136,7 @@ bool lv_style_remove_prop(lv_style_t * style, lv_style_property_t prop)
*/
void lv_style_list_init(lv_style_list_t * list)
{
list->style_list = NULL;
list->style_cnt = 0;
list->has_local = 0;
list->has_trans = 0;
memset(list, 0x00, sizeof(lv_style_list_t));
#if LV_USE_ASSERT_STYLE
list->sentinel = LV_DEBUG_STYLE_LIST_SENTINEL_VALUE;
#endif
@@ -709,6 +706,12 @@ lv_style_t * lv_style_list_add_trans_style(lv_style_list_t * list)
lv_style_list_add_style(list, trans_style);
list->has_trans = 1;
/*If the list has local style trans was added after it. But trans should be the first so swap them*/
if(list->has_local) {
lv_style_t * tmp = list->style_list[0];
list->style_list[0] = list->style_list[1];
list->style_list[1] = tmp;
}
return trans_style;
}

View File

@@ -226,7 +226,8 @@ typedef struct {
uint8_t style_cnt;
uint8_t has_local :1;
uint8_t has_trans :1;
uint8_t skip_trans :1;
uint8_t skip_trans :1; /*1: Temporally skip the transition style if any*/
uint8_t ignore_trans :1; /*1: Mark that this style list shouldn't receive transitions at all*/
}lv_style_list_t;
/**********************

View File

@@ -336,12 +336,16 @@ static void slider_init(void)
lv_style_init(&slider_knob);
lv_style_set_bg_opa(&slider_knob, LV_STATE_NORMAL, LV_OPA_COVER);
lv_style_set_bg_color(&slider_knob, LV_STATE_NORMAL, LV_COLOR_WHITE);
lv_style_set_bg_color(&slider_knob, LV_STATE_FOCUSED, LV_COLOR_RED);
lv_style_set_value_color(&slider_knob, LV_STATE_NORMAL, LV_COLOR_WHITE);
lv_style_set_radius(&slider_knob, LV_STATE_NORMAL, LV_RADIUS_CIRCLE);
lv_style_set_pad_left(&slider_knob, LV_STATE_NORMAL, LV_DPI/20);
lv_style_set_pad_right(&slider_knob, LV_STATE_NORMAL, LV_DPI/20);
lv_style_set_pad_top(&slider_knob, LV_STATE_NORMAL, LV_DPI/20);
lv_style_set_pad_bottom(&slider_knob, LV_STATE_NORMAL, LV_DPI/20);
lv_style_set_trans_time(&slider_knob, LV_STATE_NORMAL, 500);
lv_style_set_trans_prop1(&slider_knob, LV_STATE_NORMAL, LV_STYLE_BG_COLOR);
#endif
}
@@ -896,39 +900,38 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
break;
case LV_THEME_SCR:
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &scr);
break;
case LV_THEME_OBJ:
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_OBJ_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &panel);
break;
#if LV_USE_CONT
case LV_THEME_CONT:
lv_obj_clean_style_list(obj, LV_OBJ_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_CONT_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &panel);
break;
#endif
#if LV_USE_BTN
case LV_THEME_BTN:
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &btn);
break;
#endif
#if LV_USE_BTNMATRIX
case LV_THEME_BTNMATRIX:
lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BG);
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &btnm_bg);
lv_obj_clean_style_list(obj, LV_BTNMATRIX_PART_BTN);
list = lv_obj_get_style_list(obj, LV_BTNMATRIX_PART_BTN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &btn);
lv_style_list_add_style(list, &btnm_btn);
break;
@@ -936,12 +939,12 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
#if LV_USE_KEYBOARD
case LV_THEME_KEYBOARD:
lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BG);
list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &kb_bg);
lv_obj_clean_style_list(obj, LV_KEYBOARD_PART_BTN);
list = lv_obj_get_style_list(obj, LV_KEYBOARD_PART_BTN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &btn);
lv_style_list_add_style(list, &kb_btn);
break;
@@ -949,187 +952,187 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
#if LV_USE_BAR
case LV_THEME_BAR:
lv_obj_clean_style_list(obj, LV_BAR_PART_BG);
list = lv_obj_get_style_list(obj, LV_BAR_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bar_bg);
lv_obj_clean_style_list(obj, LV_BAR_PART_INDIC);
list = lv_obj_get_style_list(obj, LV_BAR_PART_INDIC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bar_indic);
break;
#endif
#if LV_USE_SWITCH
case LV_THEME_SWITCH:
lv_obj_clean_style_list(obj, LV_SWITCH_PART_BG);
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bar_bg);
lv_obj_clean_style_list(obj, LV_SWITCH_PART_INDIC);
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_INDIC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bar_indic);
lv_obj_clean_style_list(obj, LV_SWITCH_PART_KNOB);
list = lv_obj_get_style_list(obj, LV_SWITCH_PART_KNOB);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sw_knob);
break;
#endif
#if LV_USE_CANVAS
case LV_THEME_CANVAS:
lv_obj_clean_style_list(obj, LV_CANVAS_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_CANVAS_PART_MAIN);
lv_style_list_reset(list);
break;
#endif
#if LV_USE_IMG
case LV_THEME_IMAGE:
lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_IMG_PART_MAIN);
lv_style_list_reset(list);
break;
#endif
#if LV_USE_IMGBTN
case LV_THEME_IMGBTN:
lv_obj_clean_style_list(obj, LV_IMG_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_IMG_PART_MAIN);
lv_style_list_reset(list);
break;
#endif
#if LV_USE_LABEL
case LV_THEME_LABEL:
lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_LABEL_PART_MAIN);
lv_style_list_reset(list);
break;
#endif
#if LV_USE_LINE
case LV_THEME_LINE:
lv_obj_clean_style_list(obj, LV_LABEL_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_LABEL_PART_MAIN);
lv_style_list_reset(list);
break;
#endif
#if LV_USE_ARC
case LV_THEME_ARC:
lv_obj_clean_style_list(obj, LV_ARC_PART_BG);
list = lv_obj_get_style_list(obj, LV_ARC_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &arc_bg);
lv_obj_clean_style_list(obj, LV_ARC_PART_ARC);
list = lv_obj_get_style_list(obj, LV_ARC_PART_ARC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &arc);
break;
#endif
#if LV_USE_SPINNER
case LV_THEME_SPINNER:
lv_obj_clean_style_list(obj, LV_SPINNER_PART_BG);
list = lv_obj_get_style_list(obj, LV_SPINNER_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &arc_bg);
lv_obj_clean_style_list(obj, LV_SPINNER_PART_ARC);
list = lv_obj_get_style_list(obj, LV_SPINNER_PART_ARC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &arc);
break;
#endif
#if LV_USE_SLIDER
case LV_THEME_SLIDER:
lv_obj_clean_style_list(obj, LV_SLIDER_PART_BG);
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bar_bg);
lv_obj_clean_style_list(obj, LV_SLIDER_PART_INDIC);
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_INDIC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bar_indic);
lv_obj_clean_style_list(obj, LV_SLIDER_PART_KNOB);
list = lv_obj_get_style_list(obj, LV_SLIDER_PART_KNOB);
lv_style_list_reset(list);
lv_style_list_add_style(list, &slider_knob);
break;
#endif
#if LV_USE_CHECKBOX
case LV_THEME_CHECKBOX:
lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BG);
list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &cb_bg);
lv_obj_clean_style_list(obj, LV_CHECKBOX_PART_BULLET);
list = lv_obj_get_style_list(obj, LV_CHECKBOX_PART_BULLET);
lv_style_list_reset(list);
lv_style_list_add_style(list, &cb_bullet);
break;
#endif
#if LV_USE_MSGBOX
case LV_THEME_MSGBOX:
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BG);
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &bg);
break;
case LV_THEME_MSGBOX_BTNS:
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN_BG);
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &mbox_btn_bg);
lv_obj_clean_style_list(obj, LV_MSGBOX_PART_BTN);
list = lv_obj_get_style_list(obj, LV_MSGBOX_PART_BTN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &btn);
break;
#endif
#if LV_USE_LED
case LV_THEME_LED:
lv_obj_clean_style_list(obj, LV_LED_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_LED_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &led);
break;
#endif
#if LV_USE_PAGE
case LV_THEME_PAGE:
lv_obj_clean_style_list(obj, LV_PAGE_PART_BG);
list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &panel);
lv_obj_clean_style_list(obj, LV_PAGE_PART_SCRL);
list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCRL);
lv_style_list_reset(list);
lv_obj_clean_style_list(obj, LV_PAGE_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
break;
#endif
#if LV_USE_TABVIEW
case LV_THEME_TABVIEW:
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG);
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &scr);
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_BG_SCRL);
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_BG_SCRL);
lv_style_list_reset(list);
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB_BG);
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_btns_bg);
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_INDIC);
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_INDIC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_indic);
lv_obj_clean_style_list(obj, LV_TABVIEW_PART_TAB);
list = lv_obj_get_style_list(obj, LV_TABVIEW_PART_TAB);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_btns);
break;
case LV_THEME_TABVIEW_PAGE:
lv_obj_clean_style_list(obj, LV_PAGE_PART_BG);
list = lv_obj_get_style_list(obj, LV_PAGE_PART_BG);
lv_style_list_reset(list);
lv_obj_clean_style_list(obj, LV_PAGE_PART_SCRL);
list = lv_obj_get_style_list(obj, LV_PAGE_PART_SCRL);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_page_scrl);
break;
@@ -1137,16 +1140,16 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
#if LV_USE_TILEVIEW
case LV_THEME_TILEVIEW:
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_BG);
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &scr);
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
lv_obj_clean_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH);
list = lv_obj_get_style_list(obj, LV_TILEVIEW_PART_EDGE_FLASH);
lv_style_list_reset(list);
lv_style_list_add_style(list, &btn);
break;
#endif
@@ -1154,12 +1157,12 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
#if LV_USE_ROLLER
case LV_THEME_ROLLER:
lv_obj_clean_style_list(obj, LV_ROLLER_PART_BG);
list = lv_obj_get_style_list(obj, LV_ROLLER_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &roller_bg);
lv_obj_clean_style_list(obj, LV_ROLLER_PART_SEL);
list = lv_obj_get_style_list(obj, LV_ROLLER_PART_SEL);
lv_style_list_reset(list);
lv_style_list_add_style(list, &roller_sel);
break;
#endif
@@ -1167,149 +1170,150 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
#if LV_USE_OBJMASK
case LV_THEME_OBJMASK:
lv_obj_clean_style_list(obj, LV_OBJMASK_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_OBJMASK_PART_MAIN);
lv_style_list_reset(list);
break;
#endif
#if LV_USE_LIST
case LV_THEME_LIST:
lv_obj_clean_style_list(obj, LV_LIST_PART_BG);
list = lv_obj_get_style_list(obj, LV_LIST_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &list_bg);
lv_obj_clean_style_list(obj, LV_LIST_PART_SCRL);
list = lv_obj_get_style_list(obj, LV_LIST_PART_SCRL);
lv_style_list_reset(list);
lv_obj_clean_style_list(obj, LV_LIST_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_LIST_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
break;
case LV_THEME_LIST_BTN:
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &list_btn);
break;
#endif
#if LV_USE_DROPDOWN
case LV_THEME_DROPDOWN:
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_BTN);
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_BTN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ddlist_btn);
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_LIST);
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_LIST);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ddlist_page);
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
lv_obj_clean_style_list(obj, LV_DROPDOWN_PART_SELECTED);
list = lv_obj_get_style_list(obj, LV_DROPDOWN_PART_SELECTED);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ddlist_sel);
break;
#endif
#if LV_USE_CHART
case LV_THEME_CHART:
lv_obj_clean_style_list(obj, LV_CHART_PART_BG);
list = lv_obj_get_style_list(obj, LV_CHART_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &panel);
lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES_BG);
list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &chart_series_bg);
lv_obj_clean_style_list(obj, LV_CHART_PART_SERIES);
list = lv_obj_get_style_list(obj, LV_CHART_PART_SERIES);
lv_style_list_reset(list);
lv_style_list_add_style(list, &chart_series);
break;
#endif
#if LV_USE_TABLE
case LV_THEME_TABLE:
lv_obj_clean_style_list(obj, LV_TABLE_PART_BG);
list = lv_obj_get_style_list(obj, LV_TABLE_PART_BG);
lv_style_list_reset(list);
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL1);
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL1);
lv_style_list_reset(list);
lv_style_list_add_style(list, &table_cell);
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL2);
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL2);
lv_style_list_reset(list);
lv_style_list_add_style(list, &table_cell);
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL3);
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL3);
lv_style_list_reset(list);
lv_style_list_add_style(list, &table_cell);
lv_obj_clean_style_list(obj, LV_TABLE_PART_CELL4);
list = lv_obj_get_style_list(obj, LV_TABLE_PART_CELL4);
lv_style_list_reset(list);
lv_style_list_add_style(list, &table_cell);
break;
#endif
#if LV_USE_WIN
case LV_THEME_WIN:
lv_obj_clean_style_list(obj, LV_WIN_PART_BG);
list = lv_obj_get_style_list(obj, LV_WIN_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &scr);
lv_obj_clean_style_list(obj, LV_WIN_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_WIN_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
lv_obj_clean_style_list(obj, LV_WIN_PART_CONTENT_SCRL);
list = lv_obj_get_style_list(obj, LV_WIN_PART_CONTENT_SCRL);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_page_scrl);
lv_obj_clean_style_list(obj, LV_WIN_PART_HEADER);
list = lv_obj_get_style_list(obj, LV_WIN_PART_HEADER);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_btns_bg);
break;
case LV_THEME_WIN_BTN:
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &tabview_btns);
break;
#endif
#if LV_USE_TEXTAREA
case LV_THEME_TEXTAREA:
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_bg);
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_placeholder);
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_cursor);
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
break;
case LV_THEME_TEXTAREA_ONELINE:
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_BG);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_oneline);
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_PLACEHOLDER);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_placeholder);
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_CURSOR);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_CURSOR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_cursor);
lv_obj_clean_style_list(obj, LV_TEXTAREA_PART_SCRLBAR);
list = lv_obj_get_style_list(obj, LV_TEXTAREA_PART_SCRLBAR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &sb);
break;
#endif
@@ -1317,72 +1321,72 @@ void lv_theme_material_apply(lv_obj_t * obj, lv_theme_style_t name)
#if LV_USE_SPINBOX
case LV_THEME_SPINBOX:
lv_obj_clean_style_list(obj, LV_SPINBOX_PART_BG);
list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &ta_bg);
lv_obj_clean_style_list(obj, LV_SPINBOX_PART_CURSOR);
list = lv_obj_get_style_list(obj, LV_SPINBOX_PART_CURSOR);
lv_style_list_reset(list);
lv_style_list_add_style(list, &spinbox_cursor);
break;
case LV_THEME_SPINBOX_BTN:
lv_obj_clean_style_list(obj, LV_BTN_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &spinbox_btn);
break;
#endif
#if LV_USE_CALENDAR
case LV_THEME_CALENDAR:
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_BG);
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_BG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &panel);
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DATE);
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DATE);
lv_style_list_reset(list);
lv_style_list_add_style(list, &calendar_date_nums);
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_HEADER);
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_HEADER);
lv_style_list_reset(list);
lv_style_list_add_style(list, &calendar_header);
lv_obj_clean_style_list(obj, LV_CALENDAR_PART_DAY_NAMES);
list = lv_obj_get_style_list(obj, LV_CALENDAR_PART_DAY_NAMES);
lv_style_list_reset(list);
lv_style_list_add_style(list, &calendar_daynames);
break;
#endif
#if LV_USE_CPICKER
case LV_THEME_CPICKER:
lv_obj_clean_style_list(obj, LV_CPICKER_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_CPICKER_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &cpicker_bg);
lv_obj_clean_style_list(obj, LV_CPICKER_PART_INDIC);
list = lv_obj_get_style_list(obj, LV_CPICKER_PART_INDIC);
lv_style_list_reset(list);
lv_style_list_add_style(list, &cpicker_indic);
break;
#endif
#if LV_USE_LMETER
#if LV_USE_LINEMETER
case LV_THEME_LINEMETER:
lv_obj_clean_style_list(obj, LV_LINEMETER_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_LINEMETER_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &lmeter);
break;
#endif
#if LV_USE_GAUGE
case LV_THEME_GAUGE:
lv_obj_clean_style_list(obj, LV_GAUGE_PART_MAIN);
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_MAIN);
lv_style_list_reset(list);
lv_style_list_add_style(list, &gauge_main);
lv_obj_clean_style_list(obj, LV_GAUGE_PART_STRONG);
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_STRONG);
lv_style_list_reset(list);
lv_style_list_add_style(list, &gauge_strong);
lv_obj_clean_style_list(obj, LV_GAUGE_PART_NEEDLE);
list = lv_obj_get_style_list(obj, LV_GAUGE_PART_NEEDLE);
lv_style_list_reset(list);
lv_style_list_add_style(list, &gauge_needle);
break;
#endif

View File

@@ -420,7 +420,7 @@ static lv_res_t lv_arc_signal(lv_obj_t * arc, lv_signal_t sign, void * param)
if(sign == LV_SIGNAL_CLEANUP) {
lv_arc_ext_t * ext = lv_obj_get_ext_attr(arc);
lv_style_list_reset(&ext->style_arc);
lv_obj_clean_style_list(arc, LV_ARC_PART_ARC);
}
return res;

View File

@@ -627,7 +627,7 @@ static lv_res_t lv_bar_signal(lv_obj_t * bar, lv_signal_t sign, void * param)
}
if(sign == LV_SIGNAL_CLEANUP) {
lv_bar_ext_t * ext = lv_obj_get_ext_attr(bar);
lv_style_list_reset(&ext->style_indic);
lv_obj_clean_style_list(bar, LV_BAR_PART_INDIC);
#if LV_USE_ANIMATION
lv_anim_del(&ext->cur_value_anim, NULL);
lv_anim_del(&ext->start_value_anim, NULL);

View File

@@ -97,6 +97,7 @@ lv_obj_t * lv_btnmatrix_create(lv_obj_t * par, const lv_obj_t * copy)
ext->recolor = 0;
ext->one_toggle = 0;
lv_style_list_init(&ext->style_btn);
ext->style_btn.ignore_trans = 1;
if(ancestor_design_f == NULL) ancestor_design_f = lv_obj_get_design_cb(btnm);
@@ -778,6 +779,7 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * btnm, lv_signal_t sign, void * pa
lv_btnmatrix_ext_t * ext = lv_obj_get_ext_attr(btnm);
lv_point_t p;
if(sign == LV_SIGNAL_CLEANUP) {
lv_obj_clean_style_list(btnm, LV_BTNMATRIX_PART_BTN);
lv_mem_free(ext->button_areas);
lv_mem_free(ext->ctrl_bits);
} else if(sign == LV_SIGNAL_STYLE_CHG) {

View File

@@ -119,6 +119,9 @@ lv_obj_t * lv_calendar_create(lv_obj_t * par, const lv_obj_t * copy)
lv_style_list_init(&ext->style_date_nums);
lv_style_list_init(&ext->style_day_names);
lv_style_list_init(&ext->style_header);
ext->style_date_nums.skip_trans = 1;
ext->style_day_names.skip_trans = 1;
ext->style_header.skip_trans = 1;
/*The signal and design functions are not copied so set them here*/
lv_obj_set_signal_cb(calendar, lv_calendar_signal);
@@ -426,10 +429,9 @@ static lv_res_t lv_calendar_signal(lv_obj_t * calendar, lv_signal_t sign, void *
if(sign == LV_SIGNAL_GET_TYPE) return lv_obj_handle_get_type_signal(param, LV_OBJX_NAME);
if(sign == LV_SIGNAL_CLEANUP) {
lv_calendar_ext_t * ext = lv_obj_get_ext_attr(calendar);
lv_style_list_reset(&ext->style_header);
lv_style_list_reset(&ext->style_day_names);
lv_style_list_reset(&ext->style_date_nums);
lv_obj_clean_style_list(calendar, LV_CALENDAR_PART_HEADER);
lv_obj_clean_style_list(calendar, LV_CALENDAR_PART_DAY_NAMES);
lv_obj_clean_style_list(calendar, LV_CALENDAR_PART_DATE);
} else if(sign == LV_SIGNAL_PRESSING) {
lv_calendar_ext_t * ext = lv_obj_get_ext_attr(calendar);
lv_area_t header_area;
@@ -459,7 +461,7 @@ static lv_res_t lv_calendar_signal(lv_obj_t * calendar, lv_signal_t sign, void *
ext->btn_pressing = 0;
lv_obj_invalidate(calendar);
}
/*ELse set a default state*/
/*Else set a default state*/
else {
if(ext->btn_pressing != 0) lv_obj_invalidate(calendar);
ext->btn_pressing = 0;

View File

@@ -653,8 +653,8 @@ static lv_res_t lv_chart_signal(lv_obj_t * chart, lv_signal_t sign, void * param
}
lv_ll_clear(&ext->series_ll);
lv_style_list_reset(&ext->style_series);
lv_style_list_reset(&ext->style_series_bg);
lv_obj_clean_style_list(chart, LV_CHART_PART_SERIES);
lv_obj_clean_style_list(chart, LV_CHART_PART_SERIES_BG);
}
return res;

View File

@@ -661,7 +661,7 @@ static lv_res_t lv_cpicker_signal(lv_obj_t * cpicker, lv_signal_t sign, void * p
lv_cpicker_ext_t * ext = lv_obj_get_ext_attr(cpicker);
if(sign == LV_SIGNAL_CLEANUP) {
lv_style_list_reset(&ext->indic.style_list);
lv_obj_clean_style_list(cpicker, LV_CPICKER_PART_INDIC);
} else if(sign == LV_SIGNAL_REFR_EXT_DRAW_PAD) {
lv_style_int_t left = lv_obj_get_style_pad_left(cpicker, LV_CPICKER_PART_INDIC);
lv_style_int_t right = lv_obj_get_style_pad_right(cpicker, LV_CPICKER_PART_INDIC);

View File

@@ -467,7 +467,7 @@ void lv_dropdown_open(lv_obj_t * ddlist, lv_anim_enable_t anim)
lv_style_list_copy(lv_obj_get_style_list(ext->page, LV_PAGE_PART_BG), &ext->style_page);
lv_style_list_copy(lv_obj_get_style_list(ext->page, LV_PAGE_PART_SCRLBAR), &ext->style_scrlbar);
lv_style_list_reset(lv_obj_get_style_list(ext->page, LV_PAGE_PART_SCRL));
lv_obj_clean_style_list(ext->page, LV_PAGE_PART_SCRL);
lv_obj_refresh_style(ext->page);
lv_page_set_scrl_fit(ext->page, LV_FIT_TIGHT);
@@ -742,9 +742,13 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * ddlist, lv_signal_t sign, void * p
}
else if(sign == LV_SIGNAL_CLEANUP) {
lv_dropdown_close(ddlist, LV_ANIM_OFF);
/*`lv_obj_clean_style_list` is not required because these styles are only copied to the page
* so they can have transitions or other object related things. */
lv_style_list_reset(&ext->style_page);
lv_style_list_reset(&ext->style_scrlbar);
lv_style_list_reset(&ext->style_selected);
}
else if(sign == LV_SIGNAL_FOCUS) {
#if LV_USE_GROUP

View File

@@ -397,8 +397,8 @@ static lv_res_t lv_gauge_signal(lv_obj_t * gauge, lv_signal_t sign, void * param
if(sign == LV_SIGNAL_CLEANUP) {
lv_mem_free(ext->values);
ext->values = NULL;
lv_style_list_reset(&ext->style_needle);
lv_style_list_reset(&ext->style_strong);
lv_obj_clean_style_list(gauge, LV_GAUGE_PART_NEEDLE);
lv_obj_clean_style_list(gauge, LV_GAUGE_PART_STRONG);
}
return res;

View File

@@ -741,9 +741,9 @@ static lv_res_t lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param)
}
}
lv_style_list_reset(&ext->scrlbar.style);
lv_obj_clean_style_list(page, LV_PAGE_PART_SCRLBAR);
#if LV_USE_ANIMATION
lv_style_list_reset(&ext->edge_flash.style);
lv_obj_clean_style_list(page, LV_PAGE_PART_EDGE_FLASH);
#endif
}
/*Automatically move children to the scrollable object*/
@@ -1013,10 +1013,6 @@ static lv_res_t lv_page_scrollable_signal(lv_obj_t * scrl, lv_signal_t sign, voi
}
else if(sign == LV_SIGNAL_CLEANUP) {
page_ext->scrl = NULL;
#if LV_USE_ANIMATION
lv_style_list_reset(&page_ext->edge_flash.style);
#endif
lv_style_list_reset(&page_ext->scrlbar.style);
}
return res;

View File

@@ -111,7 +111,8 @@ lv_obj_t * lv_roller_create(lv_obj_t * par, const lv_obj_t * copy)
lv_obj_set_signal_cb(scrl, lv_roller_scrl_signal);
lv_style_list_reset(lv_obj_get_style_list(roller, LV_PAGE_PART_SCRL));
lv_obj_clean_style_list(roller, LV_PAGE_PART_SCRL); /*Use a transparent scrollable*/
lv_theme_apply(roller, LV_THEME_ROLLER);
refr_height(roller);

View File

@@ -377,7 +377,7 @@ static lv_res_t lv_slider_signal(lv_obj_t * slider, lv_signal_t sign, void * par
if(res != LV_RES_OK) return res;
}
} else if(sign == LV_SIGNAL_CLEANUP) {
lv_style_list_reset(&ext->style_knob);
lv_obj_clean_style_list(slider, LV_SLIDER_PART_KNOB);
} else if(sign == LV_SIGNAL_GET_EDITABLE) {
bool * editable = (bool *)param;
*editable = true;

View File

@@ -278,8 +278,7 @@ static lv_res_t lv_switch_signal(lv_obj_t * sw, lv_signal_t sign, void * param)
if(res != LV_RES_OK) return res;
if(sign == LV_SIGNAL_CLEANUP) {
lv_switch_ext_t * ext = lv_obj_get_ext_attr(sw);
lv_style_list_reset(&ext->style_knob);
lv_obj_clean_style_list(sw, LV_SWITCH_PART_KNOB);
} else if(sign == LV_SIGNAL_RELEASED) {
if(lv_switch_get_state(sw)) lv_switch_off(sw, LV_ANIM_ON);
else lv_switch_on(sw, LV_ANIM_ON);

View File

@@ -793,7 +793,7 @@ static lv_res_t lv_table_signal(lv_obj_t * table, lv_signal_t sign, void * param
if(ext->cell_data != NULL) lv_mem_free(ext->cell_data);
for(i = 0; i < LV_TABLE_CELL_STYLE_CNT; i++) {
lv_style_list_reset(&ext->cell_style[i]);
lv_obj_clean_style_list(table, LV_TABLE_PART_CELL1 + i);
}
}
else if(sign == LV_SIGNAL_STYLE_CHG) {

View File

@@ -135,13 +135,13 @@ lv_obj_t * lv_tabview_create(lv_obj_t * par, const lv_obj_t * copy)
lv_obj_set_event_cb(ext->btns, tab_btnm_event_cb);
lv_obj_set_click(ext->indic, false);
lv_obj_set_drag_dir(lv_page_get_scrl(ext->content), LV_DRAG_DIR_ONE);
lv_page_set_scrl_fit2(ext->content, LV_FIT_TIGHT, LV_FIT_PARENT);
lv_page_set_scrl_layout(ext->content, LV_LAYOUT_ROW_TOP);
lv_page_set_sb_mode(ext->content, LV_SB_MODE_OFF);
lv_obj_set_drag_dir(lv_page_get_scrl(ext->content), LV_DRAG_DIR_ONE);
lv_style_list_reset(lv_obj_get_style_list(ext->content, LV_PAGE_PART_BG));
lv_obj_clean_style_list(ext->content, LV_PAGE_PART_BG);
lv_theme_apply(tabview, LV_THEME_TABVIEW);

View File

@@ -1361,7 +1361,7 @@ static lv_res_t lv_textarea_signal(lv_obj_t * ta, lv_signal_t sign, void * param
if(ext->pwd_tmp != NULL) lv_mem_free(ext->pwd_tmp);
/* (The created label will be deleted automatically) */
lv_style_list_reset(&ext->cursor.style);
lv_obj_clean_style_list(ta, LV_TEXTAREA_PART_CURSOR);
} else if(sign == LV_SIGNAL_STYLE_CHG) {
if(ext->label) {
if(ext->one_line) {

View File

@@ -95,7 +95,7 @@ lv_obj_t * lv_win_create(lv_obj_t * par, const lv_obj_t * copy)
ext->page = lv_page_create(new_win, NULL);
lv_obj_add_protect(ext->page, LV_PROTECT_PARENT);
lv_page_set_sb_mode(ext->page, LV_SB_MODE_AUTO);
lv_style_list_reset(lv_obj_get_style_list(ext->page, LV_PAGE_PART_BG));
lv_obj_clean_style_list(ext->page, LV_PAGE_PART_BG);
/*Create a holder for the header*/
ext->header = lv_obj_create(new_win, NULL);