OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fxfa/parser/cxfa_layoutitem.h" | 7 #include "xfa/fxfa/parser/cxfa_layoutitem.h" |
8 | 8 |
| 9 #include "xfa/fxfa/app/xfa_ffnotify.h" |
9 #include "xfa/fxfa/parser/cxfa_containerlayoutitem.h" | 10 #include "xfa/fxfa/parser/cxfa_containerlayoutitem.h" |
10 #include "xfa/fxfa/parser/cxfa_contentlayoutitem.h" | 11 #include "xfa/fxfa/parser/cxfa_contentlayoutitem.h" |
11 | 12 |
| 13 void XFA_ReleaseLayoutItem(CXFA_LayoutItem* pLayoutItem) { |
| 14 CXFA_LayoutItem* pNode = pLayoutItem->m_pFirstChild; |
| 15 CXFA_FFNotify* pNotify = pLayoutItem->m_pFormNode->GetDocument()->GetNotify(); |
| 16 CXFA_LayoutProcessor* pDocLayout = |
| 17 pLayoutItem->m_pFormNode->GetDocument()->GetDocLayout(); |
| 18 while (pNode) { |
| 19 CXFA_LayoutItem* pNext = pNode->m_pNextSibling; |
| 20 pNode->m_pParent = nullptr; |
| 21 pNotify->OnLayoutItemRemoving(pDocLayout, |
| 22 static_cast<CXFA_LayoutItem*>(pNode)); |
| 23 XFA_ReleaseLayoutItem(pNode); |
| 24 pNode = pNext; |
| 25 } |
| 26 |
| 27 pNotify->OnLayoutItemRemoving(pDocLayout, pLayoutItem); |
| 28 if (pLayoutItem->m_pFormNode->GetElementType() == XFA_Element::PageArea) { |
| 29 pNotify->OnPageEvent(static_cast<CXFA_ContainerLayoutItem*>(pLayoutItem), |
| 30 XFA_PAGEVIEWEVENT_PostRemoved); |
| 31 } |
| 32 delete pLayoutItem; |
| 33 } |
| 34 |
12 CXFA_LayoutItem::CXFA_LayoutItem(CXFA_Node* pNode, FX_BOOL bIsContentLayoutItem) | 35 CXFA_LayoutItem::CXFA_LayoutItem(CXFA_Node* pNode, FX_BOOL bIsContentLayoutItem) |
13 : m_pFormNode(pNode), | 36 : m_pFormNode(pNode), |
14 m_pParent(nullptr), | 37 m_pParent(nullptr), |
15 m_pNextSibling(nullptr), | 38 m_pNextSibling(nullptr), |
16 m_pFirstChild(nullptr), | 39 m_pFirstChild(nullptr), |
17 m_bIsContentLayoutItem(bIsContentLayoutItem) {} | 40 m_bIsContentLayoutItem(bIsContentLayoutItem) {} |
18 | 41 |
19 CXFA_LayoutItem::~CXFA_LayoutItem() {} | 42 CXFA_LayoutItem::~CXFA_LayoutItem() {} |
20 | 43 |
21 CXFA_ContainerLayoutItem* CXFA_LayoutItem::AsContainerLayoutItem() { | 44 CXFA_ContainerLayoutItem* CXFA_LayoutItem::AsContainerLayoutItem() { |
22 return IsContainerLayoutItem() ? static_cast<CXFA_ContainerLayoutItem*>(this) | 45 return IsContainerLayoutItem() ? static_cast<CXFA_ContainerLayoutItem*>(this) |
23 : nullptr; | 46 : nullptr; |
24 } | 47 } |
25 CXFA_ContentLayoutItem* CXFA_LayoutItem::AsContentLayoutItem() { | 48 CXFA_ContentLayoutItem* CXFA_LayoutItem::AsContentLayoutItem() { |
26 return IsContentLayoutItem() ? static_cast<CXFA_ContentLayoutItem*>(this) | 49 return IsContentLayoutItem() ? static_cast<CXFA_ContentLayoutItem*>(this) |
27 : nullptr; | 50 : nullptr; |
28 } | 51 } |
OLD | NEW |