}
void
-_ContainerImpl::RemoveAllChildren(bool detachSystemChild)
+_ContainerImpl::RemoveAllChildren(bool detachSystemChild, bool callOnDetachingFromMaintree)
{
+ if (callOnDetachingFromMaintree && !GetCore().IsPostOrderTraversal())
+ {
+ GetCore().GetControlDelegate().OnDetachingFromMainTree();
+ }
GetCore().DetachAllChildren(detachSystemChild, true);
SysAssert(GetLastResult() == E_SUCCESS);
+ if (callOnDetachingFromMaintree && GetCore().IsPostOrderTraversal())
+ {
+ GetCore().GetControlDelegate().OnDetachingFromMainTree();
+ }
ArrayList* pChildrenList = static_cast <ArrayList*>(GetChildrenPublic());
DeleteAllChildren(this, detachSystemChild, pChildrenList);
}
E_OUT_OF_RANGE, "[E_OUT_OF_RANGE] The specified index is out of range.");\r
}\r
r = CallOnDetachingFromMainTree(*pChild);\r
+ pChild->SetCalledCallAttachingToMainTree(false);\r
pChild->SetCalledCallAttachedToMainTree(false);\r
SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
}\r
if (__isPostOrderTraversal)\r
{\r
r = control.GetControlDelegate().OnDetachingFromMainTree();\r
- pChild->SetCalledCallAttachedToMainTree(false);\r
+ control.SetCalledCallAttachingToMainTree(false);\r
+ control.SetCalledCallAttachedToMainTree(false);\r
SysTryReturn(NID_UI, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
}\r
\r
__isPostOrderTraversal = postOrderTraversal;\r
}\r
\r
+bool\r
+_Control::IsPostOrderTraversal(void)\r
+{\r
+ return __isPostOrderTraversal;\r
+}\r
+\r
void\r
_Control::SetParent(_Control* pParent)\r
{\r
_ControlImpl* pImpl = _ControlImpl::GetInstance(*pOwner);
pImpl->GetCore().DetachOwnee(GetCore());
}
- GetCore().GetControlDelegate().OnDetachingFromMainTree();
- RemoveAllChildren(true);
+ RemoveAllChildren(true, true);
Window* pWindow = &GetPublic();
delete pWindow;
pWindow = null;
result RemoveControl(int index);
result RemoveChild(int index);
void DeleteAllChildren(_ContainerImpl* pChild, bool detachSystemChild = true, Tizen::Base::Collection::ArrayList* pChildrenList = null);
- void RemoveAllChildren(bool detachSystemChild = true);
+ void RemoveAllChildren(bool detachSystemChild = true, bool callOnDetachingFromMainTree = false);
result MoveChildToTop(const _ControlImpl& child);
result MoveChildBefore(const _ControlImpl& targetChild, const _ControlImpl& child);
void SetDrawWhenVisible(bool draw);
bool IsDrawWhenVisible(void);
void SetTerminatingOrder(bool postOrderTraversal);
+ bool IsPostOrderTraversal(void);
// Font
result SetFont(const Tizen::Base::String& fontName);