diff --git a/CHANGELOG.md b/CHANGELOG.md index a772fa0ce..e19335541 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Changelog + ## v7.7.0 (06.10.2020) ### New features @@ -10,6 +11,15 @@ ### Bugfixes +## v7.6.1 (06.10.2020) + +### Bugfixes +- Fix BIDI support in dropdown list +- Fix copying base dir in `lv_obj_create` +- Handle sub pixel rendering in font loader +- Fix transitions with style caching + + ## v7.6.0 (22.09.2020) ### New features @@ -18,8 +28,6 @@ ### Bugfixes - Fix selection of options with non-ASCII letters in dropdown list - Fix font loader to support LV_FONT_FMT_TXT_LARGE -- Fix BIDI support in dropdown list -- Fix copying base dir in lv_obj_craete ## v7.5.0 (15.09.2020) diff --git a/src/lv_conf_internal.h b/src/lv_conf_internal.h index ef6fc6cc0..44ee1f4e3 100644 --- a/src/lv_conf_internal.h +++ b/src/lv_conf_internal.h @@ -10,6 +10,12 @@ #include +#if defined __has_include +# if __has_include("lv_conf.h") +# define LV_CONF_INCLUDE_SIMPLE +# endif +#endif + /*If lv_conf.h is not skipped include it*/ #if !defined(LV_CONF_SKIP) && !defined(CONFIG_LV_CONF_SKIP) # if defined(LV_CONF_PATH) /*If there is a path defined for lv_conf.h use it*/ diff --git a/src/lv_core/lv_obj.c b/src/lv_core/lv_obj.c index b265076c2..9d19b35ad 100644 --- a/src/lv_core/lv_obj.c +++ b/src/lv_core/lv_obj.c @@ -1742,13 +1742,16 @@ void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state) obj->state = new_state; - if(cmp_res == STYLE_COMPARE_SAME) return; + if(cmp_res == STYLE_COMPARE_SAME) { + return; + } #if LV_USE_ANIMATION == 0 if(cmp_res == STYLE_COMPARE_DIFF) lv_obj_refresh_style(obj, part, LV_STYLE_PROP_ALL); else if(cmp_res == STYLE_COMPARE_VISUAL_DIFF) lv_obj_refresh_style(obj, LV_OBJ_PART_ALL, LV_STYLE_PROP_ALL); #else + 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*/ @@ -4307,14 +4310,18 @@ static lv_style_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop, lv_style_list_t * style_list = lv_obj_get_style_list(obj, part); lv_style_t * style_trans = _lv_style_list_get_transition_style(style_list); + bool cahche_ori = style_list->ignore_cache; + /*Get the previous and current values*/ if((prop & 0xF) < LV_STYLE_ID_COLOR) { /*Int*/ style_list->skip_trans = 1; + style_list->ignore_cache = 1; obj->state = prev_state; lv_style_int_t int1 = _lv_obj_get_style_int(obj, part, prop); obj->state = new_state; lv_style_int_t int2 = _lv_obj_get_style_int(obj, part, prop); style_list->skip_trans = 0; + style_list->ignore_cache = cahche_ori; if(int1 == int2) return NULL; obj->state = prev_state; @@ -4339,11 +4346,13 @@ static lv_style_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; + style_list->ignore_cache = 1; obj->state = prev_state; lv_color_t c1 = _lv_obj_get_style_color(obj, part, prop); obj->state = new_state; lv_color_t c2 = _lv_obj_get_style_color(obj, part, prop); style_list->skip_trans = 0; + style_list->ignore_cache = cahche_ori; if(c1.full == c2.full) return NULL; obj->state = prev_state; @@ -4359,11 +4368,13 @@ static lv_style_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; + style_list->ignore_cache = 1; obj->state = prev_state; lv_opa_t o1 = _lv_obj_get_style_opa(obj, part, prop); obj->state = new_state; lv_opa_t o2 = _lv_obj_get_style_opa(obj, part, prop); style_list->skip_trans = 0; + style_list->ignore_cache = cahche_ori; if(o1 == o2) return NULL; @@ -4381,10 +4392,12 @@ static lv_style_trans_t * trans_create(lv_obj_t * obj, lv_style_property_t prop, else { /*Ptr*/ obj->state = prev_state; style_list->skip_trans = 1; + style_list->ignore_cache = 1; const void * p1 = _lv_obj_get_style_ptr(obj, part, prop); obj->state = new_state; const void * p2 = _lv_obj_get_style_ptr(obj, part, prop); style_list->skip_trans = 0; + style_list->ignore_cache = cahche_ori; if(memcmp(&p1, &p2, sizeof(const void *)) == 0) return NULL; obj->state = prev_state; @@ -4782,6 +4795,10 @@ static void style_snapshot(lv_obj_t * obj, uint8_t part, style_snapshot_t * shot lv_draw_img_dsc_init(&shot->img); lv_draw_line_dsc_init(&shot->line); + lv_style_list_t * list = lv_obj_get_style_list(obj, part); + bool trans_ori = list->skip_trans; + list->skip_trans = 1; + lv_obj_init_draw_rect_dsc(obj, part, &shot->rect); lv_obj_init_draw_label_dsc(obj, part, &shot->label); lv_obj_init_draw_img_dsc(obj, part, &shot->img); @@ -4813,6 +4830,7 @@ static void style_snapshot(lv_obj_t * obj, uint8_t part, style_snapshot_t * shot shot->border_post = lv_obj_get_style_border_post(obj, part); _lv_obj_disable_style_caching(obj, false); + list->skip_trans = trans_ori; } static style_snapshot_res_t style_snapshot_compare(style_snapshot_t * shot1, style_snapshot_t * shot2) diff --git a/src/lv_font/lv_font_loader.c b/src/lv_font/lv_font_loader.c index ba89955a6..7cde8370d 100644 --- a/src/lv_font/lv_font_loader.c +++ b/src/lv_font/lv_font_loader.c @@ -512,7 +512,7 @@ static bool lvgl_load_font(lv_fs_file_t * fp, lv_font_t * font) font->line_height = font_header.ascent - font_header.descent; font->get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt; font->get_glyph_bitmap = lv_font_get_bitmap_fmt_txt; - font->subpx = LV_FONT_SUBPX_NONE; + font->subpx = font_header.subpixels_mode; font_dsc->bpp = font_header.bits_per_pixel; font_dsc->kern_scale = font_header.kerning_scale; diff --git a/src/lv_themes/lv_theme_material.c b/src/lv_themes/lv_theme_material.c index 36acfd5e2..811cd899c 100644 --- a/src/lv_themes/lv_theme_material.c +++ b/src/lv_themes/lv_theme_material.c @@ -64,7 +64,7 @@ #define COLOR_BG_SEC_TEXT (IS_LIGHT ? lv_color_hex(0x31404f) : lv_color_hex(0xa5a8ad)) #define COLOR_BG_SEC_TEXT_DIS (IS_LIGHT ? lv_color_hex(0xaaaaaa) : lv_color_hex(0xa5a8ad)) -#define TRANSITION_TIME ((theme.flags & LV_THEME_MATERIAL_FLAG_NO_TRANSITION) ? 0 : 150) +#define TRANSITION_TIME 0/*((theme.flags & LV_THEME_MATERIAL_FLAG_NO_TRANSITION) ? 0 : 150)*/ #define BORDER_WIDTH LV_DPX(2) #define OUTLINE_WIDTH ((theme.flags & LV_THEME_MATERIAL_FLAG_NO_FOCUS) ? 0 : LV_DPX(2)) #define IS_LIGHT (theme.flags & LV_THEME_MATERIAL_FLAG_LIGHT)