From 57a428abd89b340fc04448dd72d75b11687cd2ff Mon Sep 17 00:00:00 2001 From: yushuailong Date: Thu, 13 Mar 2025 00:19:26 +0800 Subject: [PATCH] fix(obj): style opa of other part is not effective (#7905) Signed-off-by: yushuailong Signed-off-by: yushuailong1 Co-authored-by: yushuailong1 --- src/core/lv_obj_draw.c | 6 +++++- tests/ref_imgs/widgets/checkbox_1.png | Bin 0 -> 3393 bytes tests/ref_imgs_vg_lite/widgets/checkbox_1.png | Bin 0 -> 3378 bytes tests/src/test_cases/widgets/test_checkbox.c | 20 ++++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tests/ref_imgs/widgets/checkbox_1.png create mode 100644 tests/ref_imgs_vg_lite/widgets/checkbox_1.png 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 0000000000000000000000000000000000000000..347ebbe40a0e55fecf869e6589d9028aa7524fa2 GIT binary patch literal 3393 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 ZASEv?whl*S!G9s(+-ZDV(<#cg{{So!Ll^)6 literal 0 HcmV?d00001 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