| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 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/xfa_layout_pagemgr_new.h" | 7 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h" |
| 8 | 8 |
| 9 #include "xfa/fxfa/app/xfa_ffnotify.h" | 9 #include "xfa/fxfa/app/xfa_ffnotify.h" |
| 10 #include "xfa/fxfa/parser/xfa_doclayout.h" | 10 #include "xfa/fxfa/parser/xfa_doclayout.h" |
| 11 #include "xfa/fxfa/parser/xfa_document.h" | 11 #include "xfa/fxfa/parser/xfa_document.h" |
| 12 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" | 12 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" |
| 13 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" | 13 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" |
| 14 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" | 14 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" |
| 15 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h" | 15 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h" |
| 16 #include "xfa/fxfa/parser/xfa_localemgr.h" | 16 #include "xfa/fxfa/parser/xfa_localemgr.h" |
| 17 #include "xfa/fxfa/parser/xfa_object.h" | 17 #include "xfa/fxfa/parser/xfa_object.h" |
| 18 #include "xfa/fxfa/parser/xfa_parser.h" | |
| 19 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 18 #include "xfa/fxfa/parser/xfa_parser_imp.h" |
| 20 #include "xfa/fxfa/parser/xfa_script.h" | 19 #include "xfa/fxfa/parser/xfa_script.h" |
| 21 #include "xfa/fxfa/parser/xfa_script_imp.h" | 20 #include "xfa/fxfa/parser/xfa_script_imp.h" |
| 22 #include "xfa/fxfa/parser/xfa_utils.h" | 21 #include "xfa/fxfa/parser/xfa_utils.h" |
| 23 | 22 |
| 24 namespace { | 23 namespace { |
| 25 | 24 |
| 26 class PageSetContainerLayoutItem { | 25 class PageSetContainerLayoutItem { |
| 27 public: | 26 public: |
| 28 static inline CXFA_ContainerLayoutItem* GetFirstChild( | 27 static inline CXFA_ContainerLayoutItem* GetFirstChild( |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 iCount++; | 274 iCount++; |
| 276 if (pPageArea->GetFirstChildByClass(XFA_Element::ContentArea)) { | 275 if (pPageArea->GetFirstChildByClass(XFA_Element::ContentArea)) { |
| 277 return TRUE; | 276 return TRUE; |
| 278 } | 277 } |
| 279 } | 278 } |
| 280 } | 279 } |
| 281 if (iCount > 0) { | 280 if (iCount > 0) { |
| 282 return FALSE; | 281 return FALSE; |
| 283 } | 282 } |
| 284 CXFA_Document* pDocument = pTemplateNode->GetDocument(); | 283 CXFA_Document* pDocument = pTemplateNode->GetDocument(); |
| 285 CXFA_Document* pObjFactory = pDocument->GetParser()->GetFactory(); | |
| 286 pPageArea = m_pTemplatePageSetRoot->GetChild(0, XFA_Element::PageArea); | 284 pPageArea = m_pTemplatePageSetRoot->GetChild(0, XFA_Element::PageArea); |
| 287 if (!pPageArea) { | 285 if (!pPageArea) { |
| 288 pPageArea = pObjFactory->CreateNode(m_pTemplatePageSetRoot->GetPacketID(), | 286 pPageArea = pDocument->CreateNode(m_pTemplatePageSetRoot->GetPacketID(), |
| 289 XFA_Element::PageArea); | 287 XFA_Element::PageArea); |
| 290 if (!pPageArea) { | 288 if (!pPageArea) { |
| 291 return FALSE; | 289 return FALSE; |
| 292 } | 290 } |
| 293 m_pTemplatePageSetRoot->InsertChild(pPageArea, nullptr); | 291 m_pTemplatePageSetRoot->InsertChild(pPageArea, nullptr); |
| 294 pPageArea->SetFlag(XFA_NodeFlag_Initialized, true); | 292 pPageArea->SetFlag(XFA_NodeFlag_Initialized, true); |
| 295 } | 293 } |
| 296 CXFA_Node* pContentArea = pPageArea->GetChild(0, XFA_Element::ContentArea); | 294 CXFA_Node* pContentArea = pPageArea->GetChild(0, XFA_Element::ContentArea); |
| 297 if (!pContentArea) { | 295 if (!pContentArea) { |
| 298 pContentArea = pObjFactory->CreateNode(pPageArea->GetPacketID(), | 296 pContentArea = pDocument->CreateNode(pPageArea->GetPacketID(), |
| 299 XFA_Element::ContentArea); | 297 XFA_Element::ContentArea); |
| 300 if (!pContentArea) { | 298 if (!pContentArea) { |
| 301 return FALSE; | 299 return FALSE; |
| 302 } | 300 } |
| 303 pPageArea->InsertChild(pContentArea, nullptr); | 301 pPageArea->InsertChild(pContentArea, nullptr); |
| 304 pContentArea->SetFlag(XFA_NodeFlag_Initialized, true); | 302 pContentArea->SetFlag(XFA_NodeFlag_Initialized, true); |
| 305 pContentArea->SetMeasure(XFA_ATTRIBUTE_X, | 303 pContentArea->SetMeasure(XFA_ATTRIBUTE_X, |
| 306 CXFA_Measurement(0.25f, XFA_UNIT_In)); | 304 CXFA_Measurement(0.25f, XFA_UNIT_In)); |
| 307 pContentArea->SetMeasure(XFA_ATTRIBUTE_Y, | 305 pContentArea->SetMeasure(XFA_ATTRIBUTE_Y, |
| 308 CXFA_Measurement(0.25f, XFA_UNIT_In)); | 306 CXFA_Measurement(0.25f, XFA_UNIT_In)); |
| 309 pContentArea->SetMeasure(XFA_ATTRIBUTE_W, | 307 pContentArea->SetMeasure(XFA_ATTRIBUTE_W, |
| 310 CXFA_Measurement(8.0f, XFA_UNIT_In)); | 308 CXFA_Measurement(8.0f, XFA_UNIT_In)); |
| 311 pContentArea->SetMeasure(XFA_ATTRIBUTE_H, | 309 pContentArea->SetMeasure(XFA_ATTRIBUTE_H, |
| 312 CXFA_Measurement(10.5f, XFA_UNIT_In)); | 310 CXFA_Measurement(10.5f, XFA_UNIT_In)); |
| 313 } | 311 } |
| 314 CXFA_Node* pMedium = pPageArea->GetChild(0, XFA_Element::Medium); | 312 CXFA_Node* pMedium = pPageArea->GetChild(0, XFA_Element::Medium); |
| 315 if (!pMedium) { | 313 if (!pMedium) { |
| 316 pMedium = | 314 pMedium = |
| 317 pObjFactory->CreateNode(pPageArea->GetPacketID(), XFA_Element::Medium); | 315 pDocument->CreateNode(pPageArea->GetPacketID(), XFA_Element::Medium); |
| 318 if (!pContentArea) { | 316 if (!pContentArea) { |
| 319 return FALSE; | 317 return FALSE; |
| 320 } | 318 } |
| 321 pPageArea->InsertChild(pMedium, nullptr); | 319 pPageArea->InsertChild(pMedium, nullptr); |
| 322 pMedium->SetFlag(XFA_NodeFlag_Initialized, true); | 320 pMedium->SetFlag(XFA_NodeFlag_Initialized, true); |
| 323 pMedium->SetMeasure(XFA_ATTRIBUTE_Short, | 321 pMedium->SetMeasure(XFA_ATTRIBUTE_Short, |
| 324 CXFA_Measurement(8.5f, XFA_UNIT_In)); | 322 CXFA_Measurement(8.5f, XFA_UNIT_In)); |
| 325 pMedium->SetMeasure(XFA_ATTRIBUTE_Long, | 323 pMedium->SetMeasure(XFA_ATTRIBUTE_Long, |
| 326 CXFA_Measurement(11.0f, XFA_UNIT_In)); | 324 CXFA_Measurement(11.0f, XFA_UNIT_In)); |
| 327 } | 325 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 448 } | 446 } |
| 449 return XFA_LAYOUT_FLOAT_MAX; | 447 return XFA_LAYOUT_FLOAT_MAX; |
| 450 } | 448 } |
| 451 | 449 |
| 452 FX_BOOL XFA_LayoutPageMgr_RunBreakTestScript(CXFA_Node* pTestScript) { | 450 FX_BOOL XFA_LayoutPageMgr_RunBreakTestScript(CXFA_Node* pTestScript) { |
| 453 CFX_WideString wsExpression; | 451 CFX_WideString wsExpression; |
| 454 pTestScript->TryContent(wsExpression); | 452 pTestScript->TryContent(wsExpression); |
| 455 if (wsExpression.IsEmpty()) { | 453 if (wsExpression.IsEmpty()) { |
| 456 return TRUE; | 454 return TRUE; |
| 457 } | 455 } |
| 458 return pTestScript->GetDocument()->GetParser()->GetNotify()->RunScript( | 456 return pTestScript->GetDocument()->GetNotify()->RunScript( |
| 459 pTestScript, pTestScript->GetNodeItem(XFA_NODEITEM_Parent, | 457 pTestScript, pTestScript->GetNodeItem(XFA_NODEITEM_Parent, |
| 460 XFA_ObjectType::ContainerNode)); | 458 XFA_ObjectType::ContainerNode)); |
| 461 } | 459 } |
| 462 CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord( | 460 CXFA_ContainerRecord* CXFA_LayoutPageMgr::CreateContainerRecord( |
| 463 CXFA_Node* pPageNode, | 461 CXFA_Node* pPageNode, |
| 464 FX_BOOL bCreateNew) { | 462 FX_BOOL bCreateNew) { |
| 465 CXFA_ContainerRecord* pNewRecord = new CXFA_ContainerRecord(); | 463 CXFA_ContainerRecord* pNewRecord = new CXFA_ContainerRecord(); |
| 466 if (m_pCurrentContainerRecord) { | 464 if (m_pCurrentContainerRecord) { |
| 467 if (!IsPageSetRootOrderedOccurrence() || !pPageNode) { | 465 if (!IsPageSetRootOrderedOccurrence() || !pPageNode) { |
| 468 *pNewRecord = *GetCurrentContainerRecord(); | 466 *pNewRecord = *GetCurrentContainerRecord(); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 529 } | 527 } |
| 530 void CXFA_LayoutPageMgr::AddPageAreaLayoutItem(CXFA_ContainerRecord* pNewRecord, | 528 void CXFA_LayoutPageMgr::AddPageAreaLayoutItem(CXFA_ContainerRecord* pNewRecord, |
| 531 CXFA_Node* pNewPageArea) { | 529 CXFA_Node* pNewPageArea) { |
| 532 CXFA_ContainerLayoutItem* pNewPageAreaLayoutItem = nullptr; | 530 CXFA_ContainerLayoutItem* pNewPageAreaLayoutItem = nullptr; |
| 533 if (m_PageArray.GetSize() > m_nAvailPages) { | 531 if (m_PageArray.GetSize() > m_nAvailPages) { |
| 534 CXFA_ContainerLayoutItem* pContainerItem = m_PageArray[m_nAvailPages]; | 532 CXFA_ContainerLayoutItem* pContainerItem = m_PageArray[m_nAvailPages]; |
| 535 pContainerItem->m_pFormNode = pNewPageArea; | 533 pContainerItem->m_pFormNode = pNewPageArea; |
| 536 m_nAvailPages++; | 534 m_nAvailPages++; |
| 537 pNewPageAreaLayoutItem = pContainerItem; | 535 pNewPageAreaLayoutItem = pContainerItem; |
| 538 } else { | 536 } else { |
| 539 CXFA_FFNotify* pNotify = | 537 CXFA_FFNotify* pNotify = pNewPageArea->GetDocument()->GetNotify(); |
| 540 pNewPageArea->GetDocument()->GetParser()->GetNotify(); | |
| 541 CXFA_ContainerLayoutItem* pContainerItem = | 538 CXFA_ContainerLayoutItem* pContainerItem = |
| 542 (CXFA_ContainerLayoutItem*)pNotify->OnCreateLayoutItem(pNewPageArea); | 539 (CXFA_ContainerLayoutItem*)pNotify->OnCreateLayoutItem(pNewPageArea); |
| 543 m_PageArray.Add(pContainerItem); | 540 m_PageArray.Add(pContainerItem); |
| 544 m_nAvailPages++; | 541 m_nAvailPages++; |
| 545 pNotify->OnPageEvent(pContainerItem, XFA_PAGEVIEWEVENT_PostRemoved); | 542 pNotify->OnPageEvent(pContainerItem, XFA_PAGEVIEWEVENT_PostRemoved); |
| 546 pNewPageAreaLayoutItem = pContainerItem; | 543 pNewPageAreaLayoutItem = pContainerItem; |
| 547 } | 544 } |
| 548 pNewRecord->pCurPageSet->AddChild(pNewPageAreaLayoutItem); | 545 pNewRecord->pCurPageSet->AddChild(pNewPageAreaLayoutItem); |
| 549 pNewRecord->pCurPageArea = pNewPageAreaLayoutItem; | 546 pNewRecord->pCurPageArea = pNewPageAreaLayoutItem; |
| 550 pNewRecord->pCurContentArea = nullptr; | 547 pNewRecord->pCurContentArea = nullptr; |
| (...skipping 1006 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1557 m_rgProposedContainerRecord.RemoveAll(); | 1554 m_rgProposedContainerRecord.RemoveAll(); |
| 1558 } | 1555 } |
| 1559 m_pCurrentContainerRecord = nullptr; | 1556 m_pCurrentContainerRecord = nullptr; |
| 1560 m_pCurPageArea = nullptr; | 1557 m_pCurPageArea = nullptr; |
| 1561 m_nCurPageCount = 0; | 1558 m_nCurPageCount = 0; |
| 1562 m_bCreateOverFlowPage = FALSE; | 1559 m_bCreateOverFlowPage = FALSE; |
| 1563 m_pPageSetMap.RemoveAll(); | 1560 m_pPageSetMap.RemoveAll(); |
| 1564 } | 1561 } |
| 1565 CXFA_LayoutItem* CXFA_LayoutPageMgr::FindOrCreateLayoutItem( | 1562 CXFA_LayoutItem* CXFA_LayoutPageMgr::FindOrCreateLayoutItem( |
| 1566 CXFA_Node* pFormNode) { | 1563 CXFA_Node* pFormNode) { |
| 1567 return pFormNode->GetDocument()->GetParser()->GetNotify()->OnCreateLayoutItem( | 1564 return pFormNode->GetDocument()->GetNotify()->OnCreateLayoutItem(pFormNode); |
| 1568 pFormNode); | |
| 1569 } | 1565 } |
| 1570 | 1566 |
| 1571 void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) { | 1567 void CXFA_LayoutPageMgr::SaveLayoutItem(CXFA_LayoutItem* pParentLayoutItem) { |
| 1572 CXFA_LayoutItem* pNextLayoutItem; | 1568 CXFA_LayoutItem* pNextLayoutItem; |
| 1573 CXFA_LayoutItem* pCurLayoutItem = pParentLayoutItem->m_pFirstChild; | 1569 CXFA_LayoutItem* pCurLayoutItem = pParentLayoutItem->m_pFirstChild; |
| 1574 while (pCurLayoutItem) { | 1570 while (pCurLayoutItem) { |
| 1575 pNextLayoutItem = pCurLayoutItem->m_pNextSibling; | 1571 pNextLayoutItem = pCurLayoutItem->m_pNextSibling; |
| 1576 if (pCurLayoutItem->IsContentLayoutItem()) { | 1572 if (pCurLayoutItem->IsContentLayoutItem()) { |
| 1577 if (pCurLayoutItem->m_pFormNode->HasRemovedChildren()) { | 1573 if (pCurLayoutItem->m_pFormNode->HasRemovedChildren()) { |
| 1578 CXFA_FFNotify* pNotify = | 1574 CXFA_FFNotify* pNotify = |
| 1579 m_pTemplatePageSetRoot->GetDocument()->GetParser()->GetNotify(); | 1575 m_pTemplatePageSetRoot->GetDocument()->GetNotify(); |
| 1580 CXFA_LayoutProcessor* pDocLayout = | 1576 CXFA_LayoutProcessor* pDocLayout = |
| 1581 m_pTemplatePageSetRoot->GetDocument()->GetDocLayout(); | 1577 m_pTemplatePageSetRoot->GetDocument()->GetDocLayout(); |
| 1582 if (pCurLayoutItem->m_pFirstChild) { | 1578 if (pCurLayoutItem->m_pFirstChild) { |
| 1583 SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout); | 1579 SyncRemoveLayoutItem(pCurLayoutItem, pNotify, pDocLayout); |
| 1584 } | 1580 } |
| 1585 pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem); | 1581 pNotify->OnLayoutItemRemoving(pDocLayout, pCurLayoutItem); |
| 1586 delete pCurLayoutItem; | 1582 delete pCurLayoutItem; |
| 1587 pCurLayoutItem = pNextLayoutItem; | 1583 pCurLayoutItem = pNextLayoutItem; |
| 1588 continue; | 1584 continue; |
| 1589 } | 1585 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1629 return nullptr; | 1625 return nullptr; |
| 1630 } else if (pCurNode->GetElementType() == XFA_Element::Overflow) { | 1626 } else if (pCurNode->GetElementType() == XFA_Element::Overflow) { |
| 1631 return pCurNode; | 1627 return pCurNode; |
| 1632 } | 1628 } |
| 1633 } | 1629 } |
| 1634 return nullptr; | 1630 return nullptr; |
| 1635 } | 1631 } |
| 1636 | 1632 |
| 1637 void CXFA_LayoutPageMgr::MergePageSetContents() { | 1633 void CXFA_LayoutPageMgr::MergePageSetContents() { |
| 1638 CXFA_Document* pDocument = m_pTemplatePageSetRoot->GetDocument(); | 1634 CXFA_Document* pDocument = m_pTemplatePageSetRoot->GetDocument(); |
| 1639 CXFA_FFNotify* pNotify = pDocument->GetParser()->GetNotify(); | 1635 CXFA_FFNotify* pNotify = pDocument->GetNotify(); |
| 1640 CXFA_LayoutProcessor* pDocLayout = pDocument->GetDocLayout(); | 1636 CXFA_LayoutProcessor* pDocLayout = pDocument->GetDocLayout(); |
| 1641 CXFA_ContainerLayoutItem* pRootLayout = GetRootLayoutItem(); | 1637 CXFA_ContainerLayoutItem* pRootLayout = GetRootLayoutItem(); |
| 1642 { | 1638 { |
| 1643 for (int32_t iIndex = 0; iIndex < pDocument->m_pPendingPageSet.GetSize(); | 1639 for (int32_t iIndex = 0; iIndex < pDocument->m_pPendingPageSet.GetSize(); |
| 1644 iIndex++) { | 1640 iIndex++) { |
| 1645 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> | 1641 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> |
| 1646 sIterator(pDocument->m_pPendingPageSet.GetAt(iIndex)); | 1642 sIterator(pDocument->m_pPendingPageSet.GetAt(iIndex)); |
| 1647 for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode; | 1643 for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode; |
| 1648 pNode = sIterator.MoveToNext()) { | 1644 pNode = sIterator.MoveToNext()) { |
| 1649 if (pNode->IsContainerNode()) { | 1645 if (pNode->IsContainerNode()) { |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1843 default: | 1839 default: |
| 1844 break; | 1840 break; |
| 1845 } | 1841 } |
| 1846 } | 1842 } |
| 1847 } | 1843 } |
| 1848 } | 1844 } |
| 1849 | 1845 |
| 1850 void CXFA_LayoutPageMgr::SyncLayoutData() { | 1846 void CXFA_LayoutPageMgr::SyncLayoutData() { |
| 1851 MergePageSetContents(); | 1847 MergePageSetContents(); |
| 1852 LayoutPageSetContents(); | 1848 LayoutPageSetContents(); |
| 1853 CXFA_FFNotify* pNotify = | 1849 CXFA_FFNotify* pNotify = m_pTemplatePageSetRoot->GetDocument()->GetNotify(); |
| 1854 m_pTemplatePageSetRoot->GetDocument()->GetParser()->GetNotify(); | |
| 1855 int32_t nPageIdx = -1; | 1850 int32_t nPageIdx = -1; |
| 1856 CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem(); | 1851 CXFA_ContainerLayoutItem* pRootLayoutItem = GetRootLayoutItem(); |
| 1857 for (; pRootLayoutItem; | 1852 for (; pRootLayoutItem; |
| 1858 pRootLayoutItem = | 1853 pRootLayoutItem = |
| 1859 (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { | 1854 (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling) { |
| 1860 CXFA_NodeIteratorTemplate< | 1855 CXFA_NodeIteratorTemplate< |
| 1861 CXFA_ContainerLayoutItem, | 1856 CXFA_ContainerLayoutItem, |
| 1862 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> | 1857 CXFA_TraverseStrategy_ContentAreaContainerLayoutItem> |
| 1863 iteratorParent(pRootLayoutItem); | 1858 iteratorParent(pRootLayoutItem); |
| 1864 for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent(); | 1859 for (CXFA_ContainerLayoutItem* pContainerItem = iteratorParent.GetCurrent(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1947 } | 1942 } |
| 1948 pRootLayoutItem = m_pPageSetLayoutItemRoot; | 1943 pRootLayoutItem = m_pPageSetLayoutItemRoot; |
| 1949 CXFA_ContainerLayoutItem* pNextLayout = nullptr; | 1944 CXFA_ContainerLayoutItem* pNextLayout = nullptr; |
| 1950 for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) { | 1945 for (; pRootLayoutItem; pRootLayoutItem = pNextLayout) { |
| 1951 pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling; | 1946 pNextLayout = (CXFA_ContainerLayoutItem*)pRootLayoutItem->m_pNextSibling; |
| 1952 SaveLayoutItem(pRootLayoutItem); | 1947 SaveLayoutItem(pRootLayoutItem); |
| 1953 delete pRootLayoutItem; | 1948 delete pRootLayoutItem; |
| 1954 } | 1949 } |
| 1955 m_pPageSetLayoutItemRoot = nullptr; | 1950 m_pPageSetLayoutItemRoot = nullptr; |
| 1956 } | 1951 } |
| OLD | NEW |