return null;
}
-_TransactionNode*
-_TransactionNode::GetLastChild(void) const
-{
- int index = GetChildrenCount() - 1;
-
- SysTryReturn(NID_UI_ANIM, index >= 0, null, E_INVALID_OPERATION, "[E_INVALID_OPERATION] This node has no child.");
-
- return __children.GetChildAt(index);
-}
-
result
_TransactionNode::AddChild(_TransactionNode& child)
{
}
}
-void
+bool
_TransactionNode::RemoveChild(_TransactionNode& child)
{
if (child.IsInAnimationTick())
{
child.ReservedRemove();
+
+ return false;
}
else
{
result r = __children.Remove(&child);
delete &child;
- SysTryReturnVoidResult(NID_UI_ANIM, r == E_SUCCESS, r, "[%s] Failed to remove child.", GetErrorMessage(r));
+ return true;
}
}
{
RemoveAllAnimations(target);
- int childrenCount = GetChildrenCount();
+ RemoveAllAnimations(target);
- if (childrenCount <= 0)
+ if (GetChildrenCount() <= 0)
{
return;
}
_TransactionNode* pChild = null;
- for (int index = childrenCount-1; index >= 0; index--)
+ for (int index = 0; index < GetChildrenCount(); index++)
{
pChild = __children.GetChildAt(index);
pChild->NotifyTransactionFinished(false);
- RemoveChild(*pChild);
+ if (RemoveChild(*pChild))
+ {
+ index--;
+ }
}
}
}
int GetChildrenCount(void) const;
_TransactionNode* GetChild(int transactionId) const;
- _TransactionNode* GetLastChild(void) const;
result AddChild(_TransactionNode& child);
void RemoveChild(int transactionId);
- void RemoveChild(_TransactionNode& child);
+ bool RemoveChild(_TransactionNode& child);
void RemoveAll(void);