From 02a20152d399a16f91c9539c5f3630affbda174e Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Thu, 27 Apr 2023 01:23:17 +0200 Subject: [PATCH] fix(group): fix indev guessing logic --- src/core/lv_group.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/lv_group.c b/src/core/lv_group.c index da61f2cf6..af5fc15a4 100644 --- a/src/core/lv_group.c +++ b/src/core/lv_group.c @@ -474,17 +474,19 @@ static bool focus_next_core(lv_group_t * group, void * (*begin)(const lv_ll_t *) */ static lv_indev_t * get_indev(const lv_group_t * g) { + lv_indev_t * indev_guess = NULL; lv_indev_t * indev = lv_indev_get_next(NULL); + while(indev) { lv_indev_type_t indev_type = lv_indev_get_type(indev); + /*Prefer POINTER*/ + if(indev_type == LV_INDEV_TYPE_POINTER) return indev; if(lv_indev_get_group(indev) == g) { - /*Prefer POINTER*/ - if(indev_type == LV_INDEV_TYPE_POINTER) return indev; + indev_guess = indev; } indev = lv_indev_get_next(indev); } - /*In lack of a better option use the first input device. (It can be NULL if there is no input device)*/ - return lv_indev_get_next(NULL); + return indev_guess; }