fix(fragment): fixed child fragment event dispatch (#3683)

This commit is contained in:
Mariotaku
2022-09-12 23:19:54 +09:00
committed by GitHub
parent 4d69cd865c
commit 1ab9aa5312

View File

@@ -187,14 +187,15 @@ void lv_fragment_manager_replace(lv_fragment_manager_t * manager, lv_fragment_t
bool lv_fragment_manager_send_event(lv_fragment_manager_t * manager, int code, void * userdata) bool lv_fragment_manager_send_event(lv_fragment_manager_t * manager, int code, void * userdata)
{ {
LV_ASSERT_NULL(manager); LV_ASSERT_NULL(manager);
lv_fragment_stack_item_t * top = _lv_ll_get_tail(&manager->stack); lv_fragment_managed_states_t * p = NULL;
if(!top) return false; _LV_LL_READ_BACK(&manager->attached, p) {
lv_fragment_managed_states_t * states = top->states; if(!p->obj_created || p->destroying_obj) continue;
lv_fragment_t * instance = states->instance; lv_fragment_t * instance = p->instance;
if(!instance) return false; if(!instance) continue;
if(lv_fragment_manager_send_event(instance->child_manager, code, userdata)) return true; if(lv_fragment_manager_send_event(instance->child_manager, code, userdata)) return true;
if(!states->cls->event_cb) return false; if(p->cls->event_cb && p->cls->event_cb(instance, code, userdata)) return true;
return states->cls->event_cb(instance, code, userdata); }
return false;
} }
size_t lv_fragment_manager_get_stack_size(lv_fragment_manager_t * manager) size_t lv_fragment_manager_get_stack_size(lv_fragment_manager_t * manager)