1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-28 07:03:00 +08:00

fix(group) keep the focused object in lv_group_swap_obj

fixes #2462
This commit is contained in:
Gabor Kiss-Vamosi 2021-08-19 21:11:57 +02:00
parent f85ae9d32b
commit a9971471ba
2 changed files with 8 additions and 2 deletions

View File

@ -73,7 +73,7 @@ void lv_example_list_2(void)
{ {
/*Create a list*/ /*Create a list*/
list1 = lv_list_create(lv_scr_act()); list1 = lv_list_create(lv_scr_act());
lv_obj_set_size(list1, lv_pct(70), lv_pct(100)); lv_obj_set_size(list1, lv_pct(60), lv_pct(100));
lv_obj_set_style_pad_row(list1, 5, 0); lv_obj_set_style_pad_row(list1, 5, 0);
/*Add buttons to the list*/ /*Add buttons to the list*/
@ -94,15 +94,17 @@ void lv_example_list_2(void)
/*Create a second list with up and down buttons*/ /*Create a second list with up and down buttons*/
list2 = lv_list_create(lv_scr_act()); list2 = lv_list_create(lv_scr_act());
lv_obj_set_size(list2, lv_pct(30), lv_pct(100)); lv_obj_set_size(list2, lv_pct(40), lv_pct(100));
lv_obj_align(list2, LV_ALIGN_TOP_RIGHT, 0, 0); lv_obj_align(list2, LV_ALIGN_TOP_RIGHT, 0, 0);
lv_obj_set_flex_flow(list2, LV_FLEX_FLOW_COLUMN); lv_obj_set_flex_flow(list2, LV_FLEX_FLOW_COLUMN);
btn = lv_list_add_btn(list2, LV_SYMBOL_UP, "Up"); btn = lv_list_add_btn(list2, LV_SYMBOL_UP, "Up");
lv_obj_add_event_cb(btn, event_handler_mu, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(btn, event_handler_mu, LV_EVENT_ALL, NULL);
lv_group_remove_obj(btn);
btn = lv_list_add_btn(list2, LV_SYMBOL_DOWN, "Down"); btn = lv_list_add_btn(list2, LV_SYMBOL_DOWN, "Down");
lv_obj_add_event_cb(btn, event_handler_dn, LV_EVENT_ALL, NULL); lv_obj_add_event_cb(btn, event_handler_dn, LV_EVENT_ALL, NULL);
lv_group_remove_obj(btn);
} }
#endif #endif

View File

@ -152,6 +152,10 @@ void lv_group_swap_obj(lv_obj_t * obj1, lv_obj_t * obj2)
if((*obj_i) == obj1) (*obj_i) = obj2; if((*obj_i) == obj1) (*obj_i) = obj2;
else if((*obj_i) == obj2) (*obj_i) = obj1; else if((*obj_i) == obj2) (*obj_i) = obj1;
} }
if(*g1->obj_focus == obj1) lv_group_focus_obj(obj2);
else if(*g1->obj_focus == obj2) lv_group_focus_obj(obj1);
} }
void lv_group_remove_obj(lv_obj_t * obj) void lv_group_remove_obj(lv_obj_t * obj)