diff --git a/src/core/lv_obj_draw.c b/src/core/lv_obj_draw.c index 1bb0a6cc15..b819433e67 100644 --- a/src/core/lv_obj_draw.c +++ b/src/core/lv_obj_draw.c @@ -379,7 +379,11 @@ static inline lv_opa_t get_layer_opa(const lv_obj_t * obj, lv_part_t part, const { if(base_dsc->layer) { /* Accessing the layer opa directly is faster than using get style opa recursive */ - return base_dsc->layer->opa; + if(part == LV_PART_MAIN) { + return base_dsc->layer->opa; + } + + return LV_OPA_MIX2(base_dsc->layer->opa, lv_obj_get_style_opa(obj, part)); } /* fallback to old recursive style opa */ diff --git a/tests/ref_imgs/widgets/checkbox_1.png b/tests/ref_imgs/widgets/checkbox_1.png new file mode 100644 index 0000000000..347ebbe40a Binary files /dev/null and b/tests/ref_imgs/widgets/checkbox_1.png differ diff --git a/tests/ref_imgs_vg_lite/widgets/checkbox_1.png b/tests/ref_imgs_vg_lite/widgets/checkbox_1.png new file mode 100644 index 0000000000..fe60d48412 Binary files /dev/null and b/tests/ref_imgs_vg_lite/widgets/checkbox_1.png differ diff --git a/tests/src/test_cases/widgets/test_checkbox.c b/tests/src/test_cases/widgets/test_checkbox.c index 31d532c764..003f3e70c2 100644 --- a/tests/src/test_cases/widgets/test_checkbox.c +++ b/tests/src/test_cases/widgets/test_checkbox.c @@ -24,6 +24,17 @@ static void event_handler(lv_event_t * e) } } +void setUp(void) +{ + /* Function run before every test */ +} + +void tearDown(void) +{ + /* Function run after every test */ + lv_obj_clean(lv_screen_active()); +} + void test_checkbox_creation_successful(void) { active_screen = lv_screen_active(); @@ -115,4 +126,13 @@ void test_checkbox_rtl(void) TEST_ASSERT_EQUAL_SCREENSHOT("widgets/checkbox_rtl_1.png"); } +void test_checkbox_style_opa(void) +{ + lv_obj_t * obj = lv_checkbox_create(lv_screen_active()); + lv_obj_set_style_opa(obj, LV_OPA_0, LV_PART_INDICATOR); + lv_obj_center(obj); + + TEST_ASSERT_EQUAL_SCREENSHOT("widgets/checkbox_1.png"); +} + #endif