| 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_script_nodehelper.h" | 7 #include "xfa/fxfa/parser/xfa_script_nodehelper.h" |
| 8 | 8 |
| 9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.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_localemgr.h" | 12 #include "xfa/fxfa/parser/xfa_localemgr.h" |
| 13 #include "xfa/fxfa/parser/xfa_object.h" | 13 #include "xfa/fxfa/parser/xfa_object.h" |
| 14 #include "xfa/fxfa/parser/xfa_parser.h" | 14 #include "xfa/fxfa/parser/xfa_parser.h" |
| 15 #include "xfa/fxfa/parser/xfa_script.h" | 15 #include "xfa/fxfa/parser/xfa_script.h" |
| 16 #include "xfa/fxfa/parser/xfa_script_imp.h" | 16 #include "xfa/fxfa/parser/xfa_script_imp.h" |
| 17 #include "xfa/fxfa/parser/xfa_utils.h" | 17 #include "xfa/fxfa/parser/xfa_utils.h" |
| 18 | 18 |
| 19 CXFA_NodeHelper::CXFA_NodeHelper(void) | 19 CXFA_NodeHelper::CXFA_NodeHelper(void) |
| 20 : m_eLastCreateType(XFA_ELEMENT_DataValue), | 20 : m_eLastCreateType(XFA_ELEMENT_DataValue), |
| 21 m_pCreateParent(NULL), | 21 m_pCreateParent(nullptr), |
| 22 m_iCreateCount(0), | 22 m_iCreateCount(0), |
| 23 m_iCreateFlag(XFA_RESOLVENODE_RSTYPE_CreateNodeOne), | 23 m_iCreateFlag(XFA_RESOLVENODE_RSTYPE_CreateNodeOne), |
| 24 m_iCurAllStart(-1), | 24 m_iCurAllStart(-1), |
| 25 m_pAllStartParent(NULL) {} | 25 m_pAllStartParent(nullptr) {} |
| 26 CXFA_NodeHelper::~CXFA_NodeHelper(void) {} | 26 CXFA_NodeHelper::~CXFA_NodeHelper(void) {} |
| 27 CXFA_Node* CXFA_NodeHelper::XFA_ResolveNodes_GetOneChild( | 27 CXFA_Node* CXFA_NodeHelper::XFA_ResolveNodes_GetOneChild( |
| 28 CXFA_Node* parent, | 28 CXFA_Node* parent, |
| 29 const FX_WCHAR* pwsName, | 29 const FX_WCHAR* pwsName, |
| 30 FX_BOOL bIsClassName) { | 30 FX_BOOL bIsClassName) { |
| 31 if (parent == NULL) { | 31 if (!parent) |
| 32 return NULL; | 32 return nullptr; |
| 33 } | 33 |
| 34 CXFA_NodeArray siblings; | 34 CXFA_NodeArray siblings; |
| 35 uint32_t uNameHash = FX_HashCode_GetW(CFX_WideStringC(pwsName), false); | 35 uint32_t uNameHash = FX_HashCode_GetW(CFX_WideStringC(pwsName), false); |
| 36 XFA_NodeAcc_TraverseAnySiblings(parent, uNameHash, &siblings, bIsClassName); | 36 XFA_NodeAcc_TraverseAnySiblings(parent, uNameHash, &siblings, bIsClassName); |
| 37 if (siblings.GetSize() == 0) { | 37 if (siblings.GetSize() == 0) { |
| 38 return NULL; | 38 return nullptr; |
| 39 } | 39 } |
| 40 return siblings[0]; | 40 return siblings[0]; |
| 41 } | 41 } |
| 42 int32_t CXFA_NodeHelper::XFA_CountSiblings(CXFA_Node* pNode, | 42 int32_t CXFA_NodeHelper::XFA_CountSiblings(CXFA_Node* pNode, |
| 43 XFA_LOGIC_TYPE eLogicType, | 43 XFA_LOGIC_TYPE eLogicType, |
| 44 CXFA_NodeArray* pSiblings, | 44 CXFA_NodeArray* pSiblings, |
| 45 FX_BOOL bIsClassName) { | 45 FX_BOOL bIsClassName) { |
| 46 if (!pNode) | 46 if (!pNode) |
| 47 return 0; | 47 return 0; |
| 48 CXFA_Node* parent = | 48 CXFA_Node* parent = |
| 49 XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_NoTransparent); | 49 XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_NoTransparent); |
| 50 if (!parent) | 50 if (!parent) |
| 51 return 0; | 51 return 0; |
| 52 const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( | 52 const XFA_PROPERTY* pProperty = XFA_GetPropertyOfElement( |
| 53 parent->GetClassID(), pNode->GetClassID(), XFA_XDPPACKET_UNKNOWN); | 53 parent->GetClassID(), pNode->GetClassID(), XFA_XDPPACKET_UNKNOWN); |
| 54 if (!pProperty && eLogicType == XFA_LOGIC_Transparent) { | 54 if (!pProperty && eLogicType == XFA_LOGIC_Transparent) { |
| 55 parent = XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_Transparent); | 55 parent = XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_Transparent); |
| 56 if (parent == NULL) { | 56 if (!parent) |
| 57 return 0; | 57 return 0; |
| 58 } | |
| 59 } | 58 } |
| 60 if (bIsClassName) { | 59 if (bIsClassName) { |
| 61 return XFA_NodeAcc_TraverseSiblings(parent, pNode->GetClassHashCode(), | 60 return XFA_NodeAcc_TraverseSiblings(parent, pNode->GetClassHashCode(), |
| 62 pSiblings, eLogicType, bIsClassName); | 61 pSiblings, eLogicType, bIsClassName); |
| 63 } else { | 62 } else { |
| 64 return XFA_NodeAcc_TraverseSiblings(parent, pNode->GetNameHash(), pSiblings, | 63 return XFA_NodeAcc_TraverseSiblings(parent, pNode->GetNameHash(), pSiblings, |
| 65 eLogicType, bIsClassName); | 64 eLogicType, bIsClassName); |
| 66 } | 65 } |
| 67 } | 66 } |
| 68 int32_t CXFA_NodeHelper::XFA_NodeAcc_TraverseAnySiblings( | 67 int32_t CXFA_NodeHelper::XFA_NodeAcc_TraverseAnySiblings( |
| 69 CXFA_Node* parent, | 68 CXFA_Node* parent, |
| 70 uint32_t dNameHash, | 69 uint32_t dNameHash, |
| 71 CXFA_NodeArray* pSiblings, | 70 CXFA_NodeArray* pSiblings, |
| 72 FX_BOOL bIsClassName) { | 71 FX_BOOL bIsClassName) { |
| 73 if (parent == NULL || pSiblings == NULL) { | 72 if (!parent || !pSiblings) |
| 74 return 0; | 73 return 0; |
| 75 } | 74 |
| 76 int32_t nCount = 0; | 75 int32_t nCount = 0; |
| 77 int32_t i = 0; | 76 int32_t i = 0; |
| 78 CXFA_NodeArray properties; | 77 CXFA_NodeArray properties; |
| 79 parent->GetNodeList(properties, XFA_NODEFILTER_Properties); | 78 parent->GetNodeList(properties, XFA_NODEFILTER_Properties); |
| 80 int32_t nProperties = properties.GetSize(); | 79 int32_t nProperties = properties.GetSize(); |
| 81 for (i = 0; i < nProperties; ++i) { | 80 for (i = 0; i < nProperties; ++i) { |
| 82 CXFA_Node* child = properties[i]; | 81 CXFA_Node* child = properties[i]; |
| 83 if (bIsClassName) { | 82 if (bIsClassName) { |
| 84 if (child->GetClassHashCode() == dNameHash) { | 83 if (child->GetClassHashCode() == dNameHash) { |
| 85 pSiblings->Add(child); | 84 pSiblings->Add(child); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 bIsClassName); | 123 bIsClassName); |
| 125 } | 124 } |
| 126 return nCount; | 125 return nCount; |
| 127 } | 126 } |
| 128 int32_t CXFA_NodeHelper::XFA_NodeAcc_TraverseSiblings(CXFA_Node* parent, | 127 int32_t CXFA_NodeHelper::XFA_NodeAcc_TraverseSiblings(CXFA_Node* parent, |
| 129 uint32_t dNameHash, | 128 uint32_t dNameHash, |
| 130 CXFA_NodeArray* pSiblings, | 129 CXFA_NodeArray* pSiblings, |
| 131 XFA_LOGIC_TYPE eLogicType, | 130 XFA_LOGIC_TYPE eLogicType, |
| 132 FX_BOOL bIsClassName, | 131 FX_BOOL bIsClassName, |
| 133 FX_BOOL bIsFindProperty) { | 132 FX_BOOL bIsFindProperty) { |
| 134 if (parent == NULL || pSiblings == NULL) { | 133 if (!parent || !pSiblings) |
| 135 return 0; | 134 return 0; |
| 136 } | 135 |
| 137 int32_t nCount = 0; | 136 int32_t nCount = 0; |
| 138 int32_t i = 0; | 137 int32_t i = 0; |
| 139 if (bIsFindProperty) { | 138 if (bIsFindProperty) { |
| 140 CXFA_NodeArray properties; | 139 CXFA_NodeArray properties; |
| 141 parent->GetNodeList(properties, XFA_NODEFILTER_Properties); | 140 parent->GetNodeList(properties, XFA_NODEFILTER_Properties); |
| 142 int32_t nProperties = properties.GetSize(); | 141 int32_t nProperties = properties.GetSize(); |
| 143 for (i = 0; i < nProperties; ++i) { | 142 for (i = 0; i < nProperties; ++i) { |
| 144 CXFA_Node* child = properties[i]; | 143 CXFA_Node* child = properties[i]; |
| 145 if (bIsClassName) { | 144 if (bIsClassName) { |
| 146 if (child->GetClassHashCode() == dNameHash) { | 145 if (child->GetClassHashCode() == dNameHash) { |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 nCount += XFA_NodeAcc_TraverseSiblings(child, dNameHash, pSiblings, | 196 nCount += XFA_NodeAcc_TraverseSiblings(child, dNameHash, pSiblings, |
| 198 eLogicType, bIsClassName, FALSE); | 197 eLogicType, bIsClassName, FALSE); |
| 199 } | 198 } |
| 200 } | 199 } |
| 201 return nCount; | 200 return nCount; |
| 202 } | 201 } |
| 203 CXFA_Node* CXFA_NodeHelper::XFA_ResolveNodes_GetParent( | 202 CXFA_Node* CXFA_NodeHelper::XFA_ResolveNodes_GetParent( |
| 204 CXFA_Node* pNode, | 203 CXFA_Node* pNode, |
| 205 XFA_LOGIC_TYPE eLogicType) { | 204 XFA_LOGIC_TYPE eLogicType) { |
| 206 if (!pNode) { | 205 if (!pNode) { |
| 207 return NULL; | 206 return nullptr; |
| 208 } | 207 } |
| 209 if (eLogicType == XFA_LOGIC_NoTransparent) { | 208 if (eLogicType == XFA_LOGIC_NoTransparent) { |
| 210 return pNode->GetNodeItem(XFA_NODEITEM_Parent); | 209 return pNode->GetNodeItem(XFA_NODEITEM_Parent); |
| 211 } | 210 } |
| 212 CXFA_Node* parent; | 211 CXFA_Node* parent; |
| 213 CXFA_Node* node = pNode; | 212 CXFA_Node* node = pNode; |
| 214 while (TRUE) { | 213 while (TRUE) { |
| 215 parent = XFA_ResolveNodes_GetParent(node); | 214 parent = XFA_ResolveNodes_GetParent(node); |
| 216 if (parent == NULL) { | 215 if (!parent) |
| 217 break; | 216 break; |
| 218 } | 217 |
| 219 XFA_ELEMENT parentElement = parent->GetClassID(); | 218 XFA_ELEMENT parentElement = parent->GetClassID(); |
| 220 if ((!parent->IsUnnamed() && parentElement != XFA_ELEMENT_SubformSet) || | 219 if ((!parent->IsUnnamed() && parentElement != XFA_ELEMENT_SubformSet) || |
| 221 parentElement == XFA_ELEMENT_Variables) { | 220 parentElement == XFA_ELEMENT_Variables) { |
| 222 break; | 221 break; |
| 223 } | 222 } |
| 224 node = parent; | 223 node = parent; |
| 225 } | 224 } |
| 226 return parent; | 225 return parent; |
| 227 } | 226 } |
| 228 int32_t CXFA_NodeHelper::XFA_GetIndex(CXFA_Node* pNode, | 227 int32_t CXFA_NodeHelper::XFA_GetIndex(CXFA_Node* pNode, |
| 229 XFA_LOGIC_TYPE eLogicType, | 228 XFA_LOGIC_TYPE eLogicType, |
| 230 FX_BOOL bIsProperty, | 229 FX_BOOL bIsProperty, |
| 231 FX_BOOL bIsClassIndex) { | 230 FX_BOOL bIsClassIndex) { |
| 232 CXFA_Node* parent = | 231 CXFA_Node* parent = |
| 233 XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_NoTransparent); | 232 XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_NoTransparent); |
| 234 if (parent == NULL) { | 233 if (!parent) |
| 235 return 0; | 234 return 0; |
| 236 } | 235 |
| 237 if (!bIsProperty && eLogicType == XFA_LOGIC_Transparent) { | 236 if (!bIsProperty && eLogicType == XFA_LOGIC_Transparent) { |
| 238 parent = XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_Transparent); | 237 parent = XFA_ResolveNodes_GetParent(pNode, XFA_LOGIC_Transparent); |
| 239 if (parent == NULL) { | 238 if (!parent) |
| 240 return 0; | 239 return 0; |
| 241 } | |
| 242 } | 240 } |
| 243 uint32_t dwHashName = pNode->GetNameHash(); | 241 uint32_t dwHashName = pNode->GetNameHash(); |
| 244 if (bIsClassIndex) { | 242 if (bIsClassIndex) { |
| 245 dwHashName = pNode->GetClassHashCode(); | 243 dwHashName = pNode->GetClassHashCode(); |
| 246 } | 244 } |
| 247 CXFA_NodeArray siblings; | 245 CXFA_NodeArray siblings; |
| 248 int32_t iSize = XFA_NodeAcc_TraverseSiblings(parent, dwHashName, &siblings, | 246 int32_t iSize = XFA_NodeAcc_TraverseSiblings(parent, dwHashName, &siblings, |
| 249 eLogicType, bIsClassIndex); | 247 eLogicType, bIsClassIndex); |
| 250 for (int32_t i = 0; i < iSize; ++i) { | 248 for (int32_t i = 0; i < iSize; ++i) { |
| 251 CXFA_Node* child = siblings[i]; | 249 CXFA_Node* child = siblings[i]; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 XFA_GetIndex(refNode, eLogicType, bIsProperty, TRUE)); | 284 XFA_GetIndex(refNode, eLogicType, bIsProperty, TRUE)); |
| 287 return; | 285 return; |
| 288 } | 286 } |
| 289 ws = refNode->GetCData(XFA_ATTRIBUTE_Name); | 287 ws = refNode->GetCData(XFA_ATTRIBUTE_Name); |
| 290 ws.Replace(L".", L"\\."); | 288 ws.Replace(L".", L"\\."); |
| 291 wsName.Format(L"%s[%d]", ws.c_str(), | 289 wsName.Format(L"%s[%d]", ws.c_str(), |
| 292 XFA_GetIndex(refNode, eLogicType, bIsProperty, FALSE)); | 290 XFA_GetIndex(refNode, eLogicType, bIsProperty, FALSE)); |
| 293 } | 291 } |
| 294 | 292 |
| 295 FX_BOOL CXFA_NodeHelper::XFA_NodeIsTransparent(CXFA_Node* refNode) { | 293 FX_BOOL CXFA_NodeHelper::XFA_NodeIsTransparent(CXFA_Node* refNode) { |
| 296 if (refNode == NULL) { | 294 if (!refNode) |
| 297 return FALSE; | 295 return FALSE; |
| 298 } | 296 |
| 299 XFA_ELEMENT eRefNode = refNode->GetClassID(); | 297 XFA_ELEMENT eRefNode = refNode->GetClassID(); |
| 300 if ((refNode->IsUnnamed() && refNode->IsContainerNode()) || | 298 if ((refNode->IsUnnamed() && refNode->IsContainerNode()) || |
| 301 eRefNode == XFA_ELEMENT_SubformSet || eRefNode == XFA_ELEMENT_Area || | 299 eRefNode == XFA_ELEMENT_SubformSet || eRefNode == XFA_ELEMENT_Area || |
| 302 eRefNode == XFA_ELEMENT_Proto) { | 300 eRefNode == XFA_ELEMENT_Proto) { |
| 303 return TRUE; | 301 return TRUE; |
| 304 } | 302 } |
| 305 return FALSE; | 303 return FALSE; |
| 306 } | 304 } |
| 307 FX_BOOL CXFA_NodeHelper::XFA_CreateNode_ForCondition( | 305 FX_BOOL CXFA_NodeHelper::XFA_CreateNode_ForCondition( |
| 308 CFX_WideString& wsCondition) { | 306 CFX_WideString& wsCondition) { |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 340 m_iCreateCount = iIndex; | 338 m_iCreateCount = iIndex; |
| 341 return TRUE; | 339 return TRUE; |
| 342 } | 340 } |
| 343 return FALSE; | 341 return FALSE; |
| 344 } | 342 } |
| 345 FX_BOOL CXFA_NodeHelper::XFA_ResolveNodes_CreateNode( | 343 FX_BOOL CXFA_NodeHelper::XFA_ResolveNodes_CreateNode( |
| 346 CFX_WideString wsName, | 344 CFX_WideString wsName, |
| 347 CFX_WideString wsCondition, | 345 CFX_WideString wsCondition, |
| 348 FX_BOOL bLastNode, | 346 FX_BOOL bLastNode, |
| 349 CXFA_ScriptContext* pScriptContext) { | 347 CXFA_ScriptContext* pScriptContext) { |
| 350 if (m_pCreateParent == NULL) { | 348 if (!m_pCreateParent) |
| 351 return FALSE; | 349 return FALSE; |
| 352 } | 350 |
| 353 FX_BOOL bIsClassName = FALSE; | 351 FX_BOOL bIsClassName = FALSE; |
| 354 FX_BOOL bResult = FALSE; | 352 FX_BOOL bResult = FALSE; |
| 355 if (wsName.GetAt(0) == '!') { | 353 if (wsName.GetAt(0) == '!') { |
| 356 wsName = wsName.Right(wsName.GetLength() - 1); | 354 wsName = wsName.Right(wsName.GetLength() - 1); |
| 357 m_pCreateParent = ToNode( | 355 m_pCreateParent = ToNode( |
| 358 pScriptContext->GetDocument()->GetXFAObject(XFA_HASHCODE_Datasets)); | 356 pScriptContext->GetDocument()->GetXFAObject(XFA_HASHCODE_Datasets)); |
| 359 } | 357 } |
| 360 if (wsName.GetAt(0) == '#') { | 358 if (wsName.GetAt(0) == '#') { |
| 361 bIsClassName = TRUE; | 359 bIsClassName = TRUE; |
| 362 wsName = wsName.Right(wsName.GetLength() - 1); | 360 wsName = wsName.Right(wsName.GetLength() - 1); |
| 363 } | 361 } |
| 364 if (m_iCreateCount == 0) { | 362 if (m_iCreateCount == 0) { |
| 365 XFA_CreateNode_ForCondition(wsCondition); | 363 XFA_CreateNode_ForCondition(wsCondition); |
| 366 } | 364 } |
| 367 if (bIsClassName) { | 365 if (bIsClassName) { |
| 368 const XFA_ELEMENTINFO* lpElement = XFA_GetElementByName(wsName.AsStringC()); | 366 const XFA_ELEMENTINFO* lpElement = XFA_GetElementByName(wsName.AsStringC()); |
| 369 if (lpElement == NULL) { | 367 if (!lpElement) |
| 370 return FALSE; | 368 return FALSE; |
| 371 } | 369 |
| 372 for (int32_t iIndex = 0; iIndex < m_iCreateCount; iIndex++) { | 370 for (int32_t iIndex = 0; iIndex < m_iCreateCount; iIndex++) { |
| 373 CXFA_Node* pNewNode = | 371 CXFA_Node* pNewNode = |
| 374 m_pCreateParent->CreateSamePacketNode(lpElement->eName); | 372 m_pCreateParent->CreateSamePacketNode(lpElement->eName); |
| 375 if (pNewNode) { | 373 if (pNewNode) { |
| 376 m_pCreateParent->InsertChild(pNewNode); | 374 m_pCreateParent->InsertChild(pNewNode); |
| 377 if (iIndex == m_iCreateCount - 1) { | 375 if (iIndex == m_iCreateCount - 1) { |
| 378 m_pCreateParent = pNewNode; | 376 m_pCreateParent = pNewNode; |
| 379 } | 377 } |
| 380 bResult = TRUE; | 378 bResult = TRUE; |
| 381 } | 379 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 392 pNewNode->CreateXMLMappingNode(); | 390 pNewNode->CreateXMLMappingNode(); |
| 393 m_pCreateParent->InsertChild(pNewNode); | 391 m_pCreateParent->InsertChild(pNewNode); |
| 394 if (iIndex == m_iCreateCount - 1) { | 392 if (iIndex == m_iCreateCount - 1) { |
| 395 m_pCreateParent = pNewNode; | 393 m_pCreateParent = pNewNode; |
| 396 } | 394 } |
| 397 bResult = TRUE; | 395 bResult = TRUE; |
| 398 } | 396 } |
| 399 } | 397 } |
| 400 } | 398 } |
| 401 if (!bResult) { | 399 if (!bResult) { |
| 402 m_pCreateParent = NULL; | 400 m_pCreateParent = nullptr; |
| 403 } | 401 } |
| 404 return bResult; | 402 return bResult; |
| 405 } | 403 } |
| 406 void CXFA_NodeHelper::XFA_SetCreateNodeType(CXFA_Node* refNode) { | 404 void CXFA_NodeHelper::XFA_SetCreateNodeType(CXFA_Node* refNode) { |
| 407 if (refNode == NULL) { | 405 if (!refNode) |
| 408 return; | 406 return; |
| 409 } | 407 |
| 410 if (refNode->GetClassID() == XFA_ELEMENT_Subform) { | 408 if (refNode->GetClassID() == XFA_ELEMENT_Subform) { |
| 411 m_eLastCreateType = XFA_ELEMENT_DataGroup; | 409 m_eLastCreateType = XFA_ELEMENT_DataGroup; |
| 412 } else if (refNode->GetClassID() == XFA_ELEMENT_Field) { | 410 } else if (refNode->GetClassID() == XFA_ELEMENT_Field) { |
| 413 m_eLastCreateType = XFA_FieldIsMultiListBox(refNode) | 411 m_eLastCreateType = XFA_FieldIsMultiListBox(refNode) |
| 414 ? XFA_ELEMENT_DataGroup | 412 ? XFA_ELEMENT_DataGroup |
| 415 : XFA_ELEMENT_DataValue; | 413 : XFA_ELEMENT_DataValue; |
| 416 } else if (refNode->GetClassID() == XFA_ELEMENT_ExclGroup) { | 414 } else if (refNode->GetClassID() == XFA_ELEMENT_ExclGroup) { |
| 417 m_eLastCreateType = XFA_ELEMENT_DataValue; | 415 m_eLastCreateType = XFA_ELEMENT_DataValue; |
| 418 } | 416 } |
| 419 } | 417 } |
| 420 FX_BOOL CXFA_NodeHelper::XFA_NodeIsProperty(CXFA_Node* refNode) { | 418 FX_BOOL CXFA_NodeHelper::XFA_NodeIsProperty(CXFA_Node* refNode) { |
| 421 CXFA_Node* parent = | 419 CXFA_Node* parent = |
| 422 XFA_ResolveNodes_GetParent(refNode, XFA_LOGIC_NoTransparent); | 420 XFA_ResolveNodes_GetParent(refNode, XFA_LOGIC_NoTransparent); |
| 423 return parent && refNode && | 421 return parent && refNode && |
| 424 XFA_GetPropertyOfElement(parent->GetClassID(), refNode->GetClassID(), | 422 XFA_GetPropertyOfElement(parent->GetClassID(), refNode->GetClassID(), |
| 425 XFA_XDPPACKET_UNKNOWN); | 423 XFA_XDPPACKET_UNKNOWN); |
| 426 } | 424 } |
| OLD | NEW |