From 77162e778447c62f8e2ac4271f398921d8bb7aac Mon Sep 17 00:00:00 2001 From: AloyseTech Date: Mon, 5 Nov 2018 13:15:34 +0100 Subject: [PATCH 1/2] Avoid object defocusing in signle group object --- lv_core/lv_group.c | 4 ++++ lv_core/lv_indev.c | 11 ++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lv_core/lv_group.c b/lv_core/lv_group.c index d29af1fcd..51ed881e9 100644 --- a/lv_core/lv_group.c +++ b/lv_core/lv_group.c @@ -109,6 +109,10 @@ void lv_group_add_obj(lv_group_t * group, lv_obj_t * obj) * In this case automatically activate it*/ if(lv_ll_get_head(&group->obj_ll) == next) { lv_group_refocus(group); + if(!lv_group_get_editing(group)) + { + lv_group_set_editing(group, true); + } } } diff --git a/lv_core/lv_indev.c b/lv_core/lv_indev.c index 8b4170d7b..5f4c16a52 100644 --- a/lv_core/lv_indev.c +++ b/lv_core/lv_indev.c @@ -461,11 +461,15 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) if(focused) focused->signal_func(focused, LV_SIGNAL_GET_EDITABLE, &editable); if(editable) { - lv_group_set_editing(i->group, lv_group_get_editing(i->group) ? false : true); /*Toggle edit mode on long press*/ + if(i->group->obj_ll.head != i->group->obj_ll.tail) + lv_group_set_editing(i->group, lv_group_get_editing(i->group) ? false : true); /*Toggle edit mode on long press*/ + else if(focused) + focused->signal_func(focused, LV_SIGNAL_LONG_PRESS, indev_act); } /*If not editable then just send a long press signal*/ else { - if(focused) focused->signal_func(focused, LV_SIGNAL_LONG_PRESS, indev_act); + if(focused) // && (i->group->obj_ll.head != i->group->obj_ll.tail) + focused->signal_func(focused, LV_SIGNAL_LONG_PRESS, indev_act); } i->proc.long_pr_sent = 1; } @@ -482,7 +486,8 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) } /*An object is being edited and the button is releases. Just send enter */ else if(i->group->editing) { - if(!i->proc.long_pr_sent) lv_group_send_data(i->group, LV_GROUP_KEY_ENTER); /*Ignore long pressed enter release because it comes from mode switch*/ + if(!i->proc.long_pr_sent || i->group->obj_ll.head == i->group->obj_ll.tail) + lv_group_send_data(i->group, LV_GROUP_KEY_ENTER); /*Ignore long pressed enter release because it comes from mode switch*/ } /*If the focused object is editable and now in navigate mode then enter edit mode*/ else if(editable && !i->group->editing && !i->proc.long_pr_sent) { From 7c76a46cbcf2be43c10840df8c552f829451b861 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Tue, 6 Nov 2018 16:42:30 +0100 Subject: [PATCH 2/2] Remove unused code Co-Authored-By: AloyseTech --- lv_core/lv_indev.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lv_core/lv_indev.c b/lv_core/lv_indev.c index 5f4c16a52..7dbcf82b4 100644 --- a/lv_core/lv_indev.c +++ b/lv_core/lv_indev.c @@ -468,7 +468,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data) } /*If not editable then just send a long press signal*/ else { - if(focused) // && (i->group->obj_ll.head != i->group->obj_ll.tail) + if(focused) focused->signal_func(focused, LV_SIGNAL_LONG_PRESS, indev_act); } i->proc.long_pr_sent = 1;