| Index: xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.cpp
|
| diff --git a/xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.cpp b/xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.cpp
|
| index 50685056f4502da8fbe30f49f8e7dff05c5bd8e4..5bf63449f7f9bcb8860b3cac5f3fcb8826e63f1f 100644
|
| --- a/xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.cpp
|
| +++ b/xfa/src/fxfa/src/parser/xfa_document_datamerger_imp.cpp
|
| @@ -1096,8 +1096,7 @@ CXFA_Node* CXFA_Document::DataMerge_CopyContainer(CXFA_Node* pTemplateNode,
|
| }
|
| return NULL;
|
| }
|
| -#define XFA_DATAMERGE_UPDATEBINDINGRELATIONS_DFS
|
| -#ifdef XFA_DATAMERGE_UPDATEBINDINGRELATIONS_DFS
|
| +
|
| static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument,
|
| CXFA_Node* pFormNode,
|
| CXFA_Node* pDataScope,
|
| @@ -1227,106 +1226,6 @@ static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument,
|
| }
|
| }
|
| }
|
| -#else
|
| -static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument, CXFA_Node* pFormNode, CXFA_Node* pDataScope, CFX_PtrList& rgFormNodeList, CFX_PtrList& rgDataScopeList, FX_BOOL bD _DEBUG
|
| -#ifdef _DEBUG
|
| - CFX_WideString wsFormSOM; CFX_WideString wsDataScopeSOM;
|
| - pFormNode->GetSOMExpression(wsFormSOM); pDataScope->GetSOMExpression(wsDataScopeSOM);
|
| -#endif
|
| - XFA_ELEMENT eClassID = pFormNode->GetClassID();
|
| - CXFA_Node* pDataNode = pFormNode->GetBindData();
|
| - if(eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup || eClassID == XFA_ELEMENT_Field)
|
| -{
|
| - CXFA_Node* pTemplateNode = pFormNode->GetTemplateNode();
|
| - CXFA_Node* pTemplateNodeBind =
|
| - pTemplateNode ? pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Bind)
|
| - : NULL;
|
| - XFA_ATTRIBUTEENUM eMatch =
|
| - pTemplateNodeBind ? pTemplateNodeBind->GetEnum(XFA_ATTRIBUTE_Match)
|
| - : XFA_ATTRIBUTEENUM_Once;
|
| - switch (eMatch) {
|
| - case XFA_ATTRIBUTEENUM_None:
|
| - break;
|
| - case XFA_ATTRIBUTEENUM_Once: {
|
| - if (!pDataNode) {
|
| - if (pFormNode->GetNameHash() != 0 &&
|
| - pFormNode->GetEnum(XFA_ATTRIBUTE_Scope) != XFA_ATTRIBUTEENUM_None) {
|
| - XFA_ELEMENT eDataNodeType = eClassID == XFA_ELEMENT_Subform
|
| - ? XFA_ELEMENT_DataGroup
|
| - : XFA_ELEMENT_DataValue;
|
| - pDataNode = XFA_DataDescription_MaybeCreateDataNode(
|
| - pDocument, pDataScope, eDataNodeType,
|
| - pFormNode->GetCData(XFA_ATTRIBUTE_Name));
|
| - if (pDataNode) {
|
| - XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE);
|
| - }
|
| - }
|
| - } else {
|
| - CXFA_Node* pDataParent = pDataNode->GetNodeItem(XFA_NODEITEM_Parent);
|
| - if (pDataParent != pDataScope) {
|
| - FXSYS_assert(pDataParent);
|
| - pDataParent->RemoveChild(pDataNode);
|
| - pDataScope->InsertChild(pDataNode);
|
| - }
|
| - }
|
| - } break;
|
| - case XFA_ATTRIBUTEENUM_Global: {
|
| - FX_DWORD dwNameHash = pFormNode->GetNameHash();
|
| - if (dwNameHash != 0 && !pDataNode) {
|
| - pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash);
|
| - if (!pDataNode) {
|
| - XFA_ELEMENT eDataNodeType = eClassID == XFA_ELEMENT_Subform
|
| - ? XFA_ELEMENT_DataGroup
|
| - : XFA_ELEMENT_DataValue;
|
| - CXFA_Node* pRecordNode =
|
| - ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record));
|
| - pDataNode = XFA_DataDescription_MaybeCreateDataNode(
|
| - pDocument, pRecordNode, eDataNodeType,
|
| - pFormNode->GetCData(XFA_ATTRIBUTE_Name));
|
| - }
|
| - if (pDataNode) {
|
| - XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE);
|
| - XFA_DataMerge_RegisterGlobalBinding(
|
| - pDocument, pFormNode->GetNameHash(), pDataNode);
|
| - }
|
| - }
|
| - } break;
|
| - case XFA_ATTRIBUTEENUM_DataRef: {
|
| - if (!pDataNode) {
|
| - CFX_WideStringC wsRef = pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref);
|
| - FX_DWORD dFlags = XFA_RESOLVENODE_Children |
|
| - XFA_RESOLVENODE_Attributes |
|
| - XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_Parent |
|
| - XFA_RESOLVENODE_CreateNode;
|
| - XFA_RESOLVENODE_RS rs;
|
| - pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs,
|
| - dFlags, pTemplateNode);
|
| - CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL;
|
| - pDataNode = ToNode(pObject);
|
| - if (pDataNode) {
|
| - XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE);
|
| - }
|
| - }
|
| - } break;
|
| - }
|
| -}
|
| -if(eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup || eClassID == XFA_ELEMENT_SubformSet || eClassID == XFA_ELEMENT_Area || eClassID == XFA_ELEMENT_PageArea)
|
| -{
|
| - for (CXFA_Node* pFormChild = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - pFormChild;
|
| - pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pFormChild->GetObjectType() != XFA_OBJECTTYPE_ContainerNode) {
|
| - continue;
|
| - }
|
| - if (pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) {
|
| - continue;
|
| - }
|
| - rgFormNodeList.AddTail(pFormChild);
|
| - rgDataScopeList.AddTail(pDataNode ? pDataNode : pDataScope);
|
| - }
|
| -}
|
| -}
|
| -#endif
|
| CXFA_Node* XFA_DataMerge_FindDataScope(CXFA_Node* pParentFormNode) {
|
| for (CXFA_Node* pRootBoundNode = pParentFormNode;
|
| pRootBoundNode &&
|
| @@ -1347,27 +1246,10 @@ void CXFA_Document::DataMerge_UpdateBindingRelations(
|
| if (!pDataScope) {
|
| return;
|
| }
|
| -#ifdef XFA_DATAMERGE_UPDATEBINDINGRELATIONS_DFS
|
| XFA_DataMerge_UpdateBindingRelations(this, pFormUpdateRoot, pDataScope, FALSE,
|
| FALSE);
|
| XFA_DataMerge_UpdateBindingRelations(this, pFormUpdateRoot, pDataScope, TRUE,
|
| FALSE);
|
| -#else
|
| - CFX_PtrList rgFormNodeList, rgDataScopeList;
|
| - rgFormNodeList.AddTail(pFormUpdateRoot);
|
| - rgDataScopeList.AddTail(pDataScope);
|
| - while (rgFormNodeList.GetCount()) {
|
| - FX_POSITION pos;
|
| - pos = rgFormNodeList.GetHeadPosition();
|
| - CXFA_Node* pCurFormNode = ToNode(rgFormNodeList.GetAt(pos));
|
| - rgFormNodeList.RemoveAt(pos);
|
| - pos = rgDataScopeList.GetHeadPosition();
|
| - CXFA_Node* pCurDataScope = ToNode(rgDataScopeList.GetAt(pos));
|
| - rgDataScopeList.RemoveAt(pos);
|
| - XFA_DataMerge_UpdateBindingRelations(this, pCurFormNode, pCurDataScope,
|
| - rgFormNodeList, rgDataScopeList);
|
| - }
|
| -#endif
|
| }
|
| CXFA_Node* CXFA_Document::GetNotBindNode(CXFA_ObjArray& arrayNodes) {
|
| for (int32_t i = 0; i < arrayNodes.GetSize(); i++) {
|
|
|