| 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_document_datamerger_imp.h" | 7 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" |
| 8 | 8 |
| 9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
| 10 #include "xfa/fde/xml/fde_xml_imp.h" | 10 #include "xfa/fde/xml/fde_xml_imp.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 static FX_BOOL XFA_DataMerge_FormValueNode_SetChildContent( | 57 static FX_BOOL XFA_DataMerge_FormValueNode_SetChildContent( |
| 58 CXFA_Node* pValueNode, | 58 CXFA_Node* pValueNode, |
| 59 const CFX_WideString& wsContent, | 59 const CFX_WideString& wsContent, |
| 60 XFA_ELEMENT iType = XFA_ELEMENT_UNKNOWN) { | 60 XFA_ELEMENT iType = XFA_ELEMENT_UNKNOWN) { |
| 61 if (!pValueNode) { | 61 if (!pValueNode) { |
| 62 return FALSE; | 62 return FALSE; |
| 63 } | 63 } |
| 64 ASSERT(pValueNode->GetPacketID() == XFA_XDPPACKET_Form); | 64 ASSERT(pValueNode->GetPacketID() == XFA_XDPPACKET_Form); |
| 65 CXFA_Node* pChildNode = | 65 CXFA_Node* pChildNode = |
| 66 XFA_DataMerge_FormValueNode_CreateChild(pValueNode, iType); | 66 XFA_DataMerge_FormValueNode_CreateChild(pValueNode, iType); |
| 67 if (!pChildNode) { | 67 if (!pChildNode) |
| 68 return FALSE; | 68 return FALSE; |
| 69 } | 69 |
| 70 XFA_OBJECTTYPE objectType = pChildNode->GetObjectType(); | 70 switch (pChildNode->GetObjectType()) { |
| 71 switch (objectType) { | 71 case XFA_ObjectType::ContentNode: { |
| 72 case XFA_OBJECTTYPE_ContentNode: { | |
| 73 CXFA_Node* pContentRawDataNode = | 72 CXFA_Node* pContentRawDataNode = |
| 74 pChildNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 73 pChildNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 75 if (!pContentRawDataNode) { | 74 if (!pContentRawDataNode) { |
| 76 XFA_ELEMENT element = XFA_ELEMENT_Sharptext; | 75 XFA_ELEMENT element = XFA_ELEMENT_Sharptext; |
| 77 if (pChildNode->GetClassID() == XFA_ELEMENT_ExData) { | 76 if (pChildNode->GetClassID() == XFA_ELEMENT_ExData) { |
| 78 CFX_WideString wsContentType; | 77 CFX_WideString wsContentType; |
| 79 pChildNode->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, | 78 pChildNode->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType, |
| 80 FALSE); | 79 FALSE); |
| 81 if (wsContentType == FX_WSTRC(L"text/html")) { | 80 if (wsContentType == FX_WSTRC(L"text/html")) { |
| 82 element = XFA_ELEMENT_SharpxHTML; | 81 element = XFA_ELEMENT_SharpxHTML; |
| 83 } else if (wsContentType == FX_WSTRC(L"text/xml")) { | 82 } else if (wsContentType == FX_WSTRC(L"text/xml")) { |
| 84 element = XFA_ELEMENT_Sharpxml; | 83 element = XFA_ELEMENT_Sharpxml; |
| 85 } | 84 } |
| 86 } | 85 } |
| 87 pContentRawDataNode = pChildNode->CreateSamePacketNode(element); | 86 pContentRawDataNode = pChildNode->CreateSamePacketNode(element); |
| 88 pChildNode->InsertChild(pContentRawDataNode); | 87 pChildNode->InsertChild(pContentRawDataNode); |
| 89 } | 88 } |
| 90 pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsContent); | 89 pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsContent); |
| 91 } break; | 90 } break; |
| 92 case XFA_OBJECTTYPE_NodeC: | 91 case XFA_ObjectType::NodeC: |
| 93 case XFA_OBJECTTYPE_TextNode: | 92 case XFA_ObjectType::TextNode: |
| 94 case XFA_OBJECTTYPE_NodeV: { | 93 case XFA_ObjectType::NodeV: { |
| 95 pChildNode->SetCData(XFA_ATTRIBUTE_Value, wsContent); | 94 pChildNode->SetCData(XFA_ATTRIBUTE_Value, wsContent); |
| 96 } break; | 95 } break; |
| 97 default: | 96 default: |
| 98 ASSERT(FALSE); | 97 ASSERT(FALSE); |
| 99 break; | 98 break; |
| 100 } | 99 } |
| 101 return TRUE; | 100 return TRUE; |
| 102 } | 101 } |
| 103 static void XFA_DataMerge_CreateDataBinding(CXFA_Node* pFormNode, | 102 static void XFA_DataMerge_CreateDataBinding(CXFA_Node* pFormNode, |
| 104 CXFA_Node* pDataNode, | 103 CXFA_Node* pDataNode, |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 466 return NULL; | 465 return NULL; |
| 467 } | 466 } |
| 468 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, | 467 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, |
| 469 XFA_ELEMENT eClassID, | 468 XFA_ELEMENT eClassID, |
| 470 uint32_t dwNameHash, | 469 uint32_t dwNameHash, |
| 471 CXFA_Node* pFormParent) { | 470 CXFA_Node* pFormParent) { |
| 472 CXFA_Node* pFormChild = pFormParent->GetNodeItem(XFA_NODEITEM_FirstChild); | 471 CXFA_Node* pFormChild = pFormParent->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 473 for (; pFormChild; | 472 for (; pFormChild; |
| 474 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 473 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 475 if (pFormChild->GetClassID() == eClassID && | 474 if (pFormChild->GetClassID() == eClassID && |
| 476 pFormChild->GetNameHash() == dwNameHash && | 475 pFormChild->GetNameHash() == dwNameHash && pFormChild->IsUnusedNode()) { |
| 477 pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { | |
| 478 return pFormChild; | 476 return pFormChild; |
| 479 } | 477 } |
| 480 } | 478 } |
| 481 return NULL; | 479 return NULL; |
| 482 } | 480 } |
| 483 static FX_BOOL XFA_NeedGenerateForm(CXFA_Node* pTemplateChild, | 481 static FX_BOOL XFA_NeedGenerateForm(CXFA_Node* pTemplateChild, |
| 484 FX_BOOL bUseInstanceManager = TRUE) { | 482 FX_BOOL bUseInstanceManager = TRUE) { |
| 485 XFA_ELEMENT eType = pTemplateChild->GetClassID(); | 483 XFA_ELEMENT eType = pTemplateChild->GetClassID(); |
| 486 if (eType == XFA_ELEMENT_Variables) { | 484 if (eType == XFA_ELEMENT_Variables) { |
| 487 return TRUE; | 485 return TRUE; |
| 488 } | 486 } |
| 489 if (pTemplateChild->GetObjectType() == XFA_OBJECTTYPE_ContainerNode) { | 487 if (pTemplateChild->IsContainerNode()) { |
| 490 return FALSE; | 488 return FALSE; |
| 491 } | 489 } |
| 492 if (eType == XFA_ELEMENT_Proto || | 490 if (eType == XFA_ELEMENT_Proto || |
| 493 (bUseInstanceManager && eType == XFA_ELEMENT_Occur)) { | 491 (bUseInstanceManager && eType == XFA_ELEMENT_Occur)) { |
| 494 return FALSE; | 492 return FALSE; |
| 495 } | 493 } |
| 496 return TRUE; | 494 return TRUE; |
| 497 } | 495 } |
| 498 CXFA_Node* XFA_NodeMerge_CloneOrMergeContainer(CXFA_Document* pDocument, | 496 CXFA_Node* XFA_NodeMerge_CloneOrMergeContainer(CXFA_Document* pDocument, |
| 499 CXFA_Node* pFormParent, | 497 CXFA_Node* pFormParent, |
| 500 CXFA_Node* pTemplateNode, | 498 CXFA_Node* pTemplateNode, |
| 501 FX_BOOL bRecursive, | 499 FX_BOOL bRecursive, |
| 502 CXFA_NodeArray* pSubformArray) { | 500 CXFA_NodeArray* pSubformArray) { |
| 503 CXFA_Node* pExistingNode = NULL; | 501 CXFA_Node* pExistingNode = NULL; |
| 504 if (pSubformArray == NULL) { | 502 if (pSubformArray == NULL) { |
| 505 pExistingNode = XFA_DataMerge_FindFormDOMInstance( | 503 pExistingNode = XFA_DataMerge_FindFormDOMInstance( |
| 506 pDocument, pTemplateNode->GetClassID(), pTemplateNode->GetNameHash(), | 504 pDocument, pTemplateNode->GetClassID(), pTemplateNode->GetNameHash(), |
| 507 pFormParent); | 505 pFormParent); |
| 508 } else if (pSubformArray->GetSize() > 0) { | 506 } else if (pSubformArray->GetSize() > 0) { |
| 509 pExistingNode = pSubformArray->GetAt(0); | 507 pExistingNode = pSubformArray->GetAt(0); |
| 510 pSubformArray->RemoveAt(0); | 508 pSubformArray->RemoveAt(0); |
| 511 } | 509 } |
| 512 if (pExistingNode) { | 510 if (pExistingNode) { |
| 513 if (pSubformArray) { | 511 if (pSubformArray) { |
| 514 pFormParent->InsertChild(pExistingNode); | 512 pFormParent->InsertChild(pExistingNode); |
| 515 } else if (pExistingNode->IsContainerNode()) { | 513 } else if (pExistingNode->IsContainerNode()) { |
| 516 pFormParent->RemoveChild(pExistingNode); | 514 pFormParent->RemoveChild(pExistingNode); |
| 517 pFormParent->InsertChild(pExistingNode); | 515 pFormParent->InsertChild(pExistingNode); |
| 518 } | 516 } |
| 519 pExistingNode->ClearFlag(XFA_NODEFLAG_UnusedNode); | 517 pExistingNode->ClearFlag(XFA_NodeFlag_UnusedNode); |
| 520 pExistingNode->SetTemplateNode(pTemplateNode); | 518 pExistingNode->SetTemplateNode(pTemplateNode); |
| 521 if (bRecursive && pExistingNode->GetClassID() != XFA_ELEMENT_Items) { | 519 if (bRecursive && pExistingNode->GetClassID() != XFA_ELEMENT_Items) { |
| 522 for (CXFA_Node* pTemplateChild = | 520 for (CXFA_Node* pTemplateChild = |
| 523 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 521 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 524 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 522 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 525 XFA_NODEITEM_NextSibling)) { | 523 XFA_NODEITEM_NextSibling)) { |
| 526 if (XFA_NeedGenerateForm(pTemplateChild)) { | 524 if (XFA_NeedGenerateForm(pTemplateChild)) { |
| 527 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pExistingNode, | 525 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pExistingNode, |
| 528 pTemplateChild, bRecursive); | 526 pTemplateChild, bRecursive); |
| 529 } | 527 } |
| 530 } | 528 } |
| 531 } | 529 } |
| 532 pExistingNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 530 pExistingNode->SetFlag(XFA_NodeFlag_Initialized, true); |
| 533 return pExistingNode; | 531 return pExistingNode; |
| 534 } | 532 } |
| 535 CXFA_Node* pNewNode = pTemplateNode->CloneTemplateToForm(FALSE); | 533 CXFA_Node* pNewNode = pTemplateNode->CloneTemplateToForm(FALSE); |
| 536 pFormParent->InsertChild(pNewNode, NULL); | 534 pFormParent->InsertChild(pNewNode, NULL); |
| 537 if (bRecursive) { | 535 if (bRecursive) { |
| 538 for (CXFA_Node* pTemplateChild = | 536 for (CXFA_Node* pTemplateChild = |
| 539 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 537 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 540 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 538 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 541 XFA_NODEITEM_NextSibling)) { | 539 XFA_NODEITEM_NextSibling)) { |
| 542 if (XFA_NeedGenerateForm(pTemplateChild)) { | 540 if (XFA_NeedGenerateForm(pTemplateChild)) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 if (dwNameHash != pNode->GetNameHash()) { | 573 if (dwNameHash != pNode->GetNameHash()) { |
| 576 break; | 574 break; |
| 577 } | 575 } |
| 578 CXFA_Node* pNextNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 576 CXFA_Node* pNextNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 579 pFormParent->RemoveChild(pNode); | 577 pFormParent->RemoveChild(pNode); |
| 580 subforms.Add(pNode); | 578 subforms.Add(pNode); |
| 581 pNode = pNextNode; | 579 pNode = pNextNode; |
| 582 } | 580 } |
| 583 pFormParent->RemoveChild(pExistingNode); | 581 pFormParent->RemoveChild(pExistingNode); |
| 584 pFormParent->InsertChild(pExistingNode); | 582 pFormParent->InsertChild(pExistingNode); |
| 585 pExistingNode->ClearFlag(XFA_NODEFLAG_UnusedNode); | 583 pExistingNode->ClearFlag(XFA_NodeFlag_UnusedNode); |
| 586 pExistingNode->SetTemplateNode(pTemplateNode); | 584 pExistingNode->SetTemplateNode(pTemplateNode); |
| 587 return pExistingNode; | 585 return pExistingNode; |
| 588 } | 586 } |
| 589 CXFA_Node* pNewNode = pDocument->GetParser()->GetFactory()->CreateNode( | 587 CXFA_Node* pNewNode = pDocument->GetParser()->GetFactory()->CreateNode( |
| 590 XFA_XDPPACKET_Form, XFA_ELEMENT_InstanceManager); | 588 XFA_XDPPACKET_Form, XFA_ELEMENT_InstanceManager); |
| 591 ASSERT(pNewNode); | 589 ASSERT(pNewNode); |
| 592 wsInstMgrNodeName = | 590 wsInstMgrNodeName = |
| 593 FX_WSTRC(L"_") + pTemplateNode->GetCData(XFA_ATTRIBUTE_Name); | 591 FX_WSTRC(L"_") + pTemplateNode->GetCData(XFA_ATTRIBUTE_Name); |
| 594 pNewNode->SetCData(XFA_ATTRIBUTE_Name, wsInstMgrNodeName); | 592 pNewNode->SetCData(XFA_ATTRIBUTE_Name, wsInstMgrNodeName); |
| 595 pFormParent->InsertChild(pNewNode, NULL); | 593 pFormParent->InsertChild(pNewNode, NULL); |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 769 : NULL; | 767 : NULL; |
| 770 if (CXFA_Node* pOccurTemplateNode = | 768 if (CXFA_Node* pOccurTemplateNode = |
| 771 pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Occur)) { | 769 pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Occur)) { |
| 772 pOccurNode = pInstMgrNode | 770 pOccurNode = pInstMgrNode |
| 773 ? XFA_NodeMerge_CloneOrMergeContainer( | 771 ? XFA_NodeMerge_CloneOrMergeContainer( |
| 774 pDocument, pInstMgrNode, pOccurTemplateNode, FALSE) | 772 pDocument, pInstMgrNode, pOccurTemplateNode, FALSE) |
| 775 : pOccurTemplateNode; | 773 : pOccurTemplateNode; |
| 776 } else if (pInstMgrNode) { | 774 } else if (pInstMgrNode) { |
| 777 pOccurNode = pInstMgrNode->GetFirstChildByClass(XFA_ELEMENT_Occur); | 775 pOccurNode = pInstMgrNode->GetFirstChildByClass(XFA_ELEMENT_Occur); |
| 778 if (pOccurNode) { | 776 if (pOccurNode) { |
| 779 pOccurNode->ClearFlag(XFA_NODEFLAG_UnusedNode); | 777 pOccurNode->ClearFlag(XFA_NodeFlag_UnusedNode); |
| 780 } | 778 } |
| 781 } | 779 } |
| 782 if (pInstMgrNode) { | 780 if (pInstMgrNode) { |
| 783 pInstMgrNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 781 pInstMgrNode->SetFlag(XFA_NodeFlag_Initialized, true); |
| 784 pSearchArray = &subformArray; | 782 pSearchArray = &subformArray; |
| 785 if (pFormParentNode->GetClassID() == XFA_ELEMENT_PageArea) { | 783 if (pFormParentNode->GetClassID() == XFA_ELEMENT_PageArea) { |
| 786 bOneInstance = TRUE; | 784 bOneInstance = TRUE; |
| 787 if (subformArray.GetSize() < 1) { | 785 if (subformArray.GetSize() < 1) { |
| 788 pSearchArray = NULL; | 786 pSearchArray = NULL; |
| 789 } | 787 } |
| 790 } else if ((pTemplateNode->GetNameHash() == 0) && | 788 } else if ((pTemplateNode->GetNameHash() == 0) && |
| 791 (subformArray.GetSize() < 1)) { | 789 (subformArray.GetSize() < 1)) { |
| 792 pSearchArray = NULL; | 790 pSearchArray = NULL; |
| 793 } | 791 } |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 CXFA_Node* pSubform = nodeArray[iIndex]; | 835 CXFA_Node* pSubform = nodeArray[iIndex]; |
| 838 CXFA_Node* pDataNode = | 836 CXFA_Node* pDataNode = |
| 839 reinterpret_cast<CXFA_Node*>(subformMapArray.GetValueAt(pSubform)); | 837 reinterpret_cast<CXFA_Node*>(subformMapArray.GetValueAt(pSubform)); |
| 840 for (CXFA_Node* pTemplateChild = | 838 for (CXFA_Node* pTemplateChild = |
| 841 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 839 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 842 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 840 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 843 XFA_NODEITEM_NextSibling)) { | 841 XFA_NODEITEM_NextSibling)) { |
| 844 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { | 842 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { |
| 845 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubform, | 843 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubform, |
| 846 pTemplateChild, TRUE); | 844 pTemplateChild, TRUE); |
| 847 } else if (pTemplateChild->GetObjectType() == | 845 } else if (pTemplateChild->IsContainerNode()) { |
| 848 XFA_OBJECTTYPE_ContainerNode) { | |
| 849 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubform, | 846 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubform, |
| 850 pDataNode, FALSE, TRUE, FALSE); | 847 pDataNode, FALSE, TRUE, FALSE); |
| 851 } | 848 } |
| 852 } | 849 } |
| 853 } | 850 } |
| 854 subformMapArray.RemoveAll(); | 851 subformMapArray.RemoveAll(); |
| 855 } | 852 } |
| 856 for (; iMax < 0 || iCurRepeatIndex < iMax; iCurRepeatIndex++) { | 853 for (; iMax < 0 || iCurRepeatIndex < iMax; iCurRepeatIndex++) { |
| 857 FX_BOOL bSelfMatch = FALSE; | 854 FX_BOOL bSelfMatch = FALSE; |
| 858 XFA_ATTRIBUTEENUM eBindMatch = XFA_ATTRIBUTEENUM_None; | 855 XFA_ATTRIBUTEENUM eBindMatch = XFA_ATTRIBUTEENUM_None; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 875 } | 872 } |
| 876 CFX_ArrayTemplate<XFA_DataMerge_RecurseRecord> rgItemMatchList; | 873 CFX_ArrayTemplate<XFA_DataMerge_RecurseRecord> rgItemMatchList; |
| 877 CFX_ArrayTemplate<CXFA_Node*> rgItemUnmatchList; | 874 CFX_ArrayTemplate<CXFA_Node*> rgItemUnmatchList; |
| 878 for (CXFA_Node* pTemplateChild = | 875 for (CXFA_Node* pTemplateChild = |
| 879 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 876 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 880 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 877 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 881 XFA_NODEITEM_NextSibling)) { | 878 XFA_NODEITEM_NextSibling)) { |
| 882 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { | 879 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { |
| 883 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, | 880 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, |
| 884 pTemplateChild, TRUE); | 881 pTemplateChild, TRUE); |
| 885 } else if (pTemplateChild->GetObjectType() == | 882 } else if (pTemplateChild->IsContainerNode()) { |
| 886 XFA_OBJECTTYPE_ContainerNode) { | |
| 887 bSelfMatch = FALSE; | 883 bSelfMatch = FALSE; |
| 888 eBindMatch = XFA_ATTRIBUTEENUM_None; | 884 eBindMatch = XFA_ATTRIBUTEENUM_None; |
| 889 CXFA_Node* pDataMatch; | 885 CXFA_Node* pDataMatch; |
| 890 if (eRelation != XFA_ATTRIBUTEENUM_Ordered && | 886 if (eRelation != XFA_ATTRIBUTEENUM_Ordered && |
| 891 (pDataMatch = XFA_DataMerge_FindMatchingDataNode( | 887 (pDataMatch = XFA_DataMerge_FindMatchingDataNode( |
| 892 pDocument, pTemplateChild, pDataScope, bAccessedDataDOM, | 888 pDocument, pTemplateChild, pDataScope, bAccessedDataDOM, |
| 893 FALSE, NULL, bSelfMatch, eBindMatch)) != nullptr) { | 889 FALSE, NULL, bSelfMatch, eBindMatch)) != nullptr) { |
| 894 XFA_DataMerge_RecurseRecord sNewRecord = {pTemplateChild, | 890 XFA_DataMerge_RecurseRecord sNewRecord = {pTemplateChild, |
| 895 pDataMatch}; | 891 pDataMatch}; |
| 896 if (bSelfMatch) { | 892 if (bSelfMatch) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 936 if (!pFirstInstance) { | 932 if (!pFirstInstance) { |
| 937 pFirstInstance = pSubformSetNode; | 933 pFirstInstance = pSubformSetNode; |
| 938 } | 934 } |
| 939 for (CXFA_Node* pTemplateChild = | 935 for (CXFA_Node* pTemplateChild = |
| 940 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 936 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 941 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 937 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 942 XFA_NODEITEM_NextSibling)) { | 938 XFA_NODEITEM_NextSibling)) { |
| 943 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { | 939 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { |
| 944 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, | 940 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, |
| 945 pTemplateChild, TRUE); | 941 pTemplateChild, TRUE); |
| 946 } else if (pTemplateChild->GetObjectType() == | 942 } else if (pTemplateChild->IsContainerNode()) { |
| 947 XFA_OBJECTTYPE_ContainerNode) { | |
| 948 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, | 943 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, |
| 949 pDataScope); | 944 pDataScope); |
| 950 } | 945 } |
| 951 } | 946 } |
| 952 } | 947 } |
| 953 } | 948 } |
| 954 if (iCurRepeatIndex == 0 && bAccessedDataDOM == FALSE) { | 949 if (iCurRepeatIndex == 0 && bAccessedDataDOM == FALSE) { |
| 955 int32_t iLimit = iMax; | 950 int32_t iLimit = iMax; |
| 956 if (pInstMgrNode && pTemplateNode->GetNameHash() == 0) { | 951 if (pInstMgrNode && pTemplateNode->GetNameHash() == 0) { |
| 957 iLimit = subformArray.GetSize(); | 952 iLimit = subformArray.GetSize(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 978 if (!pFirstInstance) { | 973 if (!pFirstInstance) { |
| 979 pFirstInstance = pSubformNode; | 974 pFirstInstance = pSubformNode; |
| 980 } | 975 } |
| 981 for (CXFA_Node* pTemplateChild = | 976 for (CXFA_Node* pTemplateChild = |
| 982 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 977 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 983 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 978 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 984 XFA_NODEITEM_NextSibling)) { | 979 XFA_NODEITEM_NextSibling)) { |
| 985 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { | 980 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { |
| 986 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformNode, | 981 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformNode, |
| 987 pTemplateChild, TRUE); | 982 pTemplateChild, TRUE); |
| 988 } else if (pTemplateChild->GetObjectType() == | 983 } else if (pTemplateChild->IsContainerNode()) { |
| 989 XFA_OBJECTTYPE_ContainerNode) { | |
| 990 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformNode, | 984 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformNode, |
| 991 pDataScope); | 985 pDataScope); |
| 992 } | 986 } |
| 993 } | 987 } |
| 994 } | 988 } |
| 995 } | 989 } |
| 996 } | 990 } |
| 997 int32_t iMinimalLimit = iCurRepeatIndex == 0 ? iInit : iMin; | 991 int32_t iMinimalLimit = iCurRepeatIndex == 0 ? iInit : iMin; |
| 998 for (; iCurRepeatIndex < iMinimalLimit; iCurRepeatIndex++) { | 992 for (; iCurRepeatIndex < iMinimalLimit; iCurRepeatIndex++) { |
| 999 CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( | 993 CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( |
| 1000 pDocument, pFormParentNode, pTemplateNode, FALSE, pSearchArray); | 994 pDocument, pFormParentNode, pTemplateNode, FALSE, pSearchArray); |
| 1001 ASSERT(pSubformSetNode); | 995 ASSERT(pSubformSetNode); |
| 1002 if (!pFirstInstance) { | 996 if (!pFirstInstance) { |
| 1003 pFirstInstance = pSubformSetNode; | 997 pFirstInstance = pSubformSetNode; |
| 1004 } | 998 } |
| 1005 FX_BOOL bFound = FALSE; | 999 FX_BOOL bFound = FALSE; |
| 1006 for (CXFA_Node* pTemplateChild = | 1000 for (CXFA_Node* pTemplateChild = |
| 1007 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 1001 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 1008 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 1002 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
| 1009 XFA_NODEITEM_NextSibling)) { | 1003 XFA_NODEITEM_NextSibling)) { |
| 1010 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { | 1004 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { |
| 1011 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, | 1005 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, |
| 1012 pTemplateChild, TRUE); | 1006 pTemplateChild, TRUE); |
| 1013 } else if (pTemplateChild->GetObjectType() == | 1007 } else if (pTemplateChild->IsContainerNode()) { |
| 1014 XFA_OBJECTTYPE_ContainerNode) { | |
| 1015 if (bFound && eRelation == XFA_ATTRIBUTEENUM_Choice) { | 1008 if (bFound && eRelation == XFA_ATTRIBUTEENUM_Choice) { |
| 1016 continue; | 1009 continue; |
| 1017 } | 1010 } |
| 1018 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, | 1011 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, |
| 1019 pDataScope, FALSE, bDataMerge); | 1012 pDataScope, FALSE, bDataMerge); |
| 1020 bFound = TRUE; | 1013 bFound = TRUE; |
| 1021 } | 1014 } |
| 1022 } | 1015 } |
| 1023 } | 1016 } |
| 1024 return pFirstInstance; | 1017 return pFirstInstance; |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1202 } | 1195 } |
| 1203 } | 1196 } |
| 1204 if (bMatchRef && | 1197 if (bMatchRef && |
| 1205 (eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_SubformSet || | 1198 (eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_SubformSet || |
| 1206 eClassID == XFA_ELEMENT_Area || eClassID == XFA_ELEMENT_PageArea || | 1199 eClassID == XFA_ELEMENT_Area || eClassID == XFA_ELEMENT_PageArea || |
| 1207 eClassID == XFA_ELEMENT_PageSet)) { | 1200 eClassID == XFA_ELEMENT_PageSet)) { |
| 1208 for (CXFA_Node* pFormChild = | 1201 for (CXFA_Node* pFormChild = |
| 1209 pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 1202 pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 1210 pFormChild; | 1203 pFormChild; |
| 1211 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 1204 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 1212 if (pFormChild->GetObjectType() != XFA_OBJECTTYPE_ContainerNode) { | 1205 if (!pFormChild->IsContainerNode()) |
| 1213 continue; | 1206 continue; |
| 1214 } | 1207 if (pFormChild->IsUnusedNode()) |
| 1215 if (pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { | |
| 1216 continue; | 1208 continue; |
| 1217 } | 1209 |
| 1218 XFA_DataMerge_UpdateBindingRelations(pDocument, pFormChild, | 1210 XFA_DataMerge_UpdateBindingRelations(pDocument, pFormChild, |
| 1219 pDataNode ? pDataNode : pDataScope, | 1211 pDataNode ? pDataNode : pDataScope, |
| 1220 bDataRef, bParentDataRef); | 1212 bDataRef, bParentDataRef); |
| 1221 } | 1213 } |
| 1222 } | 1214 } |
| 1223 } | 1215 } |
| 1224 CXFA_Node* XFA_DataMerge_FindDataScope(CXFA_Node* pParentFormNode) { | 1216 CXFA_Node* XFA_DataMerge_FindDataScope(CXFA_Node* pParentFormNode) { |
| 1225 for (CXFA_Node* pRootBoundNode = pParentFormNode; | 1217 for (CXFA_Node* pRootBoundNode = pParentFormNode; |
| 1226 pRootBoundNode && | 1218 pRootBoundNode && pRootBoundNode->IsContainerNode(); |
| 1227 pRootBoundNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode; | |
| 1228 pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { | 1219 pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { |
| 1229 CXFA_Node* pDataScope = pRootBoundNode->GetBindData(); | 1220 CXFA_Node* pDataScope = pRootBoundNode->GetBindData(); |
| 1230 if (pDataScope) { | 1221 if (pDataScope) { |
| 1231 return pDataScope; | 1222 return pDataScope; |
| 1232 } | 1223 } |
| 1233 } | 1224 } |
| 1234 return ToNode( | 1225 return ToNode( |
| 1235 pParentFormNode->GetDocument()->GetXFAObject(XFA_HASHCODE_Data)); | 1226 pParentFormNode->GetDocument()->GetXFAObject(XFA_HASHCODE_Data)); |
| 1236 } | 1227 } |
| 1237 void CXFA_Document::DataMerge_UpdateBindingRelations( | 1228 void CXFA_Document::DataMerge_UpdateBindingRelations( |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1327 bEmptyForm = TRUE; | 1318 bEmptyForm = TRUE; |
| 1328 pFormRoot = CreateNode(XFA_XDPPACKET_Form, XFA_ELEMENT_Form); | 1319 pFormRoot = CreateNode(XFA_XDPPACKET_Form, XFA_ELEMENT_Form); |
| 1329 ASSERT(pFormRoot); | 1320 ASSERT(pFormRoot); |
| 1330 pFormRoot->SetCData(XFA_ATTRIBUTE_Name, L"form"); | 1321 pFormRoot->SetCData(XFA_ATTRIBUTE_Name, L"form"); |
| 1331 m_pRootNode->InsertChild(pFormRoot, NULL); | 1322 m_pRootNode->InsertChild(pFormRoot, NULL); |
| 1332 } else { | 1323 } else { |
| 1333 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> | 1324 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> |
| 1334 sIterator(pFormRoot); | 1325 sIterator(pFormRoot); |
| 1335 for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; | 1326 for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; |
| 1336 pNode = sIterator.MoveToNext()) { | 1327 pNode = sIterator.MoveToNext()) { |
| 1337 pNode->SetFlag(XFA_NODEFLAG_UnusedNode, true); | 1328 pNode->SetFlag(XFA_NodeFlag_UnusedNode, true); |
| 1338 } | 1329 } |
| 1339 } | 1330 } |
| 1340 CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( | 1331 CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( |
| 1341 this, pFormRoot, pTemplateChosen, FALSE); | 1332 this, pFormRoot, pTemplateChosen, FALSE); |
| 1342 ASSERT(pSubformSetNode); | 1333 ASSERT(pSubformSetNode); |
| 1343 if (!pDataTopLevel) { | 1334 if (!pDataTopLevel) { |
| 1344 CFX_WideStringC wsFormName = pSubformSetNode->GetCData(XFA_ATTRIBUTE_Name); | 1335 CFX_WideStringC wsFormName = pSubformSetNode->GetCData(XFA_ATTRIBUTE_Name); |
| 1345 CFX_WideString wsDataTopLevelName(wsFormName.IsEmpty() ? L"form" | 1336 CFX_WideString wsDataTopLevelName(wsFormName.IsEmpty() ? L"form" |
| 1346 : wsFormName); | 1337 : wsFormName); |
| 1347 CFDE_XMLElement* pDataTopLevelXMLNode = | 1338 CFDE_XMLElement* pDataTopLevelXMLNode = |
| 1348 new CFDE_XMLElement(wsDataTopLevelName); | 1339 new CFDE_XMLElement(wsDataTopLevelName); |
| 1349 | 1340 |
| 1350 pDataTopLevel = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); | 1341 pDataTopLevel = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); |
| 1351 pDataTopLevel->SetCData(XFA_ATTRIBUTE_Name, wsDataTopLevelName); | 1342 pDataTopLevel->SetCData(XFA_ATTRIBUTE_Name, wsDataTopLevelName); |
| 1352 pDataTopLevel->SetXMLMappingNode(pDataTopLevelXMLNode); | 1343 pDataTopLevel->SetXMLMappingNode(pDataTopLevelXMLNode); |
| 1353 CXFA_Node* pBeforeNode = pDataRoot->GetNodeItem(XFA_NODEITEM_FirstChild); | 1344 CXFA_Node* pBeforeNode = pDataRoot->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 1354 pDataRoot->InsertChild(pDataTopLevel, pBeforeNode); | 1345 pDataRoot->InsertChild(pDataTopLevel, pBeforeNode); |
| 1355 } | 1346 } |
| 1356 ASSERT(pDataTopLevel); | 1347 ASSERT(pDataTopLevel); |
| 1357 XFA_DataMerge_CreateDataBinding(pSubformSetNode, pDataTopLevel); | 1348 XFA_DataMerge_CreateDataBinding(pSubformSetNode, pDataTopLevel); |
| 1358 for (CXFA_Node* pTemplateChild = | 1349 for (CXFA_Node* pTemplateChild = |
| 1359 pTemplateChosen->GetNodeItem(XFA_NODEITEM_FirstChild); | 1350 pTemplateChosen->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 1360 pTemplateChild; | 1351 pTemplateChild; |
| 1361 pTemplateChild = pTemplateChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 1352 pTemplateChild = pTemplateChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 1362 if (XFA_NeedGenerateForm(pTemplateChild)) { | 1353 if (XFA_NeedGenerateForm(pTemplateChild)) { |
| 1363 XFA_NodeMerge_CloneOrMergeContainer(this, pSubformSetNode, pTemplateChild, | 1354 XFA_NodeMerge_CloneOrMergeContainer(this, pSubformSetNode, pTemplateChild, |
| 1364 TRUE); | 1355 TRUE); |
| 1365 } else if (pTemplateChild->GetObjectType() == | 1356 } else if (pTemplateChild->IsContainerNode()) { |
| 1366 XFA_OBJECTTYPE_ContainerNode) { | |
| 1367 DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, pDataTopLevel); | 1357 DataMerge_CopyContainer(pTemplateChild, pSubformSetNode, pDataTopLevel); |
| 1368 } | 1358 } |
| 1369 } | 1359 } |
| 1370 if (pDDRoot) { | 1360 if (pDDRoot) { |
| 1371 XFA_DataDescription_UpdateDataRelation(pDataRoot, pDDRoot); | 1361 XFA_DataDescription_UpdateDataRelation(pDataRoot, pDDRoot); |
| 1372 } | 1362 } |
| 1373 DataMerge_UpdateBindingRelations(pSubformSetNode); | 1363 DataMerge_UpdateBindingRelations(pSubformSetNode); |
| 1374 CXFA_Node* pPageSetNode = | 1364 CXFA_Node* pPageSetNode = |
| 1375 pSubformSetNode->GetFirstChildByClass(XFA_ELEMENT_PageSet); | 1365 pSubformSetNode->GetFirstChildByClass(XFA_ELEMENT_PageSet); |
| 1376 while (pPageSetNode) { | 1366 while (pPageSetNode) { |
| 1377 m_pPendingPageSet.Add(pPageSetNode); | 1367 m_pPendingPageSet.Add(pPageSetNode); |
| 1378 CXFA_Node* pNextPageSetNode = | 1368 CXFA_Node* pNextPageSetNode = |
| 1379 pPageSetNode->GetNextSameClassSibling(XFA_ELEMENT_PageSet); | 1369 pPageSetNode->GetNextSameClassSibling(XFA_ELEMENT_PageSet); |
| 1380 pSubformSetNode->RemoveChild(pPageSetNode); | 1370 pSubformSetNode->RemoveChild(pPageSetNode); |
| 1381 pPageSetNode = pNextPageSetNode; | 1371 pPageSetNode = pNextPageSetNode; |
| 1382 } | 1372 } |
| 1383 if (!bEmptyForm) { | 1373 if (!bEmptyForm) { |
| 1384 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> | 1374 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> |
| 1385 sIterator(pFormRoot); | 1375 sIterator(pFormRoot); |
| 1386 CXFA_Node* pNode = sIterator.MoveToNext(); | 1376 CXFA_Node* pNode = sIterator.MoveToNext(); |
| 1387 while (pNode) { | 1377 while (pNode) { |
| 1388 if (pNode->HasFlag(XFA_NODEFLAG_UnusedNode)) { | 1378 if (pNode->IsUnusedNode()) { |
| 1389 if (pNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode || | 1379 if (pNode->IsContainerNode() || |
| 1390 pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { | 1380 pNode->GetClassID() == XFA_ELEMENT_InstanceManager) { |
| 1391 CXFA_Node* pNext = sIterator.SkipChildrenAndMoveToNext(); | 1381 CXFA_Node* pNext = sIterator.SkipChildrenAndMoveToNext(); |
| 1392 pNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pNode); | 1382 pNode->GetNodeItem(XFA_NODEITEM_Parent)->RemoveChild(pNode); |
| 1393 pNode = pNext; | 1383 pNode = pNext; |
| 1394 } else { | 1384 } else { |
| 1395 pNode->ClearFlag(XFA_NODEFLAG_UnusedNode); | 1385 pNode->ClearFlag(XFA_NodeFlag_UnusedNode); |
| 1396 pNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 1386 pNode->SetFlag(XFA_NodeFlag_Initialized, true); |
| 1397 pNode = sIterator.MoveToNext(); | 1387 pNode = sIterator.MoveToNext(); |
| 1398 } | 1388 } |
| 1399 } else { | 1389 } else { |
| 1400 pNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 1390 pNode->SetFlag(XFA_NodeFlag_Initialized, true); |
| 1401 pNode = sIterator.MoveToNext(); | 1391 pNode = sIterator.MoveToNext(); |
| 1402 } | 1392 } |
| 1403 } | 1393 } |
| 1404 } | 1394 } |
| 1405 } | 1395 } |
| 1406 void CXFA_Document::DoDataRemerge(FX_BOOL bDoDataMerge) { | 1396 void CXFA_Document::DoDataRemerge(FX_BOOL bDoDataMerge) { |
| 1407 CXFA_Node* pFormRoot = ToNode(GetXFAObject(XFA_HASHCODE_Form)); | 1397 CXFA_Node* pFormRoot = ToNode(GetXFAObject(XFA_HASHCODE_Form)); |
| 1408 if (pFormRoot) { | 1398 if (pFormRoot) { |
| 1409 while (CXFA_Node* pNode = pFormRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { | 1399 while (CXFA_Node* pNode = pFormRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { |
| 1410 pFormRoot->RemoveChild(pNode); | 1400 pFormRoot->RemoveChild(pNode); |
| 1411 } | 1401 } |
| 1412 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 1402 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); |
| 1413 } | 1403 } |
| 1414 XFA_DataMerge_ClearGlobalBinding(this); | 1404 XFA_DataMerge_ClearGlobalBinding(this); |
| 1415 if (bDoDataMerge) { | 1405 if (bDoDataMerge) { |
| 1416 DoDataMerge(); | 1406 DoDataMerge(); |
| 1417 } | 1407 } |
| 1418 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); | 1408 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); |
| 1419 pLayoutProcessor->SetForceReLayout(TRUE); | 1409 pLayoutProcessor->SetForceReLayout(TRUE); |
| 1420 } | 1410 } |
| OLD | NEW |