From 6ea5ba035a396bf0956b4b4ab3a5b3ee33b6c546 Mon Sep 17 00:00:00 2001 From: dsinclair Date: Wed, 3 Aug 2016 10:20:32 -0700 Subject: Split xfa_layout_appadapter This moves the needed traverse strategies into their own files, removes the unused one and cleans up the includes. Review-Url: https://codereview.chromium.org/2207033002 --- xfa/fxfa/parser/cxfa_layoutitem.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'xfa/fxfa/parser/cxfa_layoutitem.cpp') diff --git a/xfa/fxfa/parser/cxfa_layoutitem.cpp b/xfa/fxfa/parser/cxfa_layoutitem.cpp index a9ba3490d8..ebe33b650f 100644 --- a/xfa/fxfa/parser/cxfa_layoutitem.cpp +++ b/xfa/fxfa/parser/cxfa_layoutitem.cpp @@ -6,9 +6,32 @@ #include "xfa/fxfa/parser/cxfa_layoutitem.h" +#include "xfa/fxfa/app/xfa_ffnotify.h" #include "xfa/fxfa/parser/cxfa_containerlayoutitem.h" #include "xfa/fxfa/parser/cxfa_contentlayoutitem.h" +void XFA_ReleaseLayoutItem(CXFA_LayoutItem* pLayoutItem) { + CXFA_LayoutItem* pNode = pLayoutItem->m_pFirstChild; + CXFA_FFNotify* pNotify = pLayoutItem->m_pFormNode->GetDocument()->GetNotify(); + CXFA_LayoutProcessor* pDocLayout = + pLayoutItem->m_pFormNode->GetDocument()->GetDocLayout(); + while (pNode) { + CXFA_LayoutItem* pNext = pNode->m_pNextSibling; + pNode->m_pParent = nullptr; + pNotify->OnLayoutItemRemoving(pDocLayout, + static_cast(pNode)); + XFA_ReleaseLayoutItem(pNode); + pNode = pNext; + } + + pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); + if (pLayoutItem->m_pFormNode->GetElementType() == XFA_Element::PageArea) { + pNotify->OnPageEvent(static_cast(pLayoutItem), + XFA_PAGEVIEWEVENT_PostRemoved); + } + delete pLayoutItem; +} + CXFA_LayoutItem::CXFA_LayoutItem(CXFA_Node* pNode, FX_BOOL bIsContentLayoutItem) : m_pFormNode(pNode), m_pParent(nullptr), -- cgit v1.2.3