diff --git a/frameworks/components/ui_view_group.cpp b/frameworks/components/ui_view_group.cpp index ecc0632e557d9aa7b18dfcab26e10c3fc5777988..8f7874ced16a55621018494cc251a7437116896f 100755 --- a/frameworks/components/ui_view_group.cpp +++ b/frameworks/components/ui_view_group.cpp @@ -35,7 +35,10 @@ UIViewGroup::UIViewGroup() #endif } -UIViewGroup::~UIViewGroup() {} +UIViewGroup::~UIViewGroup() +{ + RemoveAllChildren(); +} void UIViewGroup::Add(UIView* view) { @@ -143,17 +146,7 @@ void UIViewGroup::Remove(UIView* view) void UIViewGroup::RemoveAll() { - UIView* node = childrenHead_; - childrenHead_ = nullptr; - childrenTail_ = nullptr; - childrenNum_ = 0; - UIView* tmp = nullptr; - while (node != nullptr) { - tmp = node; - node = node->GetNextSibling(); - tmp->SetParent(nullptr); - tmp->SetNextSibling(nullptr); - } + RemoveAllChildren(); OnChildChanged(); } @@ -298,4 +291,19 @@ void UIViewGroup::AutoResize() SetWidth(rect.GetWidth() + rect.GetLeft()); SetHeight(rect.GetHeight() + rect.GetTop()); } + +void UIViewGroup::RemoveAllChildren() +{ + UIView* node = childrenHead_; + childrenHead_ = nullptr; + childrenTail_ = nullptr; + childrenNum_ = 0; + UIView* tmp = nullptr; + while (node != nullptr) { + tmp = node; + node = node->GetNextSibling(); + tmp->SetParent(nullptr); + tmp->SetNextSibling(nullptr); + } +} } // namespace OHOS diff --git a/interfaces/kits/components/ui_view_group.h b/interfaces/kits/components/ui_view_group.h index dcde2af9645504c892f1b26de3847d00e9132aec..2398d41de6a649663b47a823185c81cc4c4c740f 100755 --- a/interfaces/kits/components/ui_view_group.h +++ b/interfaces/kits/components/ui_view_group.h @@ -286,6 +286,7 @@ protected: private: void AutoResize(); + void RemoveAllChildren(); #if ENABLE_FOCUS_MANAGER bool isInterceptFocus_ : 1; #endif