From e33bc08e547abd4fe12054e537dc67a2a3342c6c Mon Sep 17 00:00:00 2001 From: VIFEX Date: Tue, 26 Mar 2024 10:59:32 +0800 Subject: [PATCH] fix(obj_tree): fix event loss caused by obj deletion (#5950) Signed-off-by: HaoHangyu Signed-off-by: pengyiqiang Co-authored-by: HaoHangyu Co-authored-by: pengyiqiang --- src/core/lv_obj_tree.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/lv_obj_tree.c b/src/core/lv_obj_tree.c index 8da23ad9a3..0de79f4981 100644 --- a/src/core/lv_obj_tree.c +++ b/src/core/lv_obj_tree.c @@ -484,8 +484,13 @@ static void lv_obj_delete_async_cb(void * obj) static void obj_indev_reset(lv_indev_t * indev, lv_obj_t * obj) { - /*Wait for release to avoid accidentally triggering other obj to be clicked*/ - lv_indev_wait_release(indev); + /* If the input device is already in the release state, + * there is no need to wait for the input device to be released + */ + if(lv_indev_get_state(indev) != LV_INDEV_STATE_RELEASED) { + /*Wait for release to avoid accidentally triggering other obj to be clicked*/ + lv_indev_wait_release(indev); + } /*Reset the input device*/ lv_indev_reset(indev, obj);