Index: xfa/fxfa/parser/xfa_object_imp.cpp |
diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp |
index 87941af070350665662581b4c64fd04738573720..6280e13d00b834e32b4cb5de744ad78a96e63dd9 100644 |
--- a/xfa/fxfa/parser/xfa_object_imp.cpp |
+++ b/xfa/fxfa/parser/xfa_object_imp.cpp |
@@ -1298,172 +1298,161 @@ void CXFA_Node::Script_Attribute_BOOLRead(FXJSE_HVALUE hValue, |
ThrowScriptErrorMessage(XFA_IDS_INVAlID_PROP_SET); |
} |
} |
+ |
void CXFA_Node::Script_Attribute_SendAttributeChangeMessage( |
- void* eAttribute, |
- void* eValue, |
+ XFA_ATTRIBUTE eAttribute, |
FX_BOOL bScriptModify) { |
CXFA_LayoutProcessor* pLayoutPro = m_pDocument->GetLayoutProcessor(); |
- if (!pLayoutPro) { |
+ if (!pLayoutPro) |
return; |
- } |
+ |
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
- if (!pNotify) { |
+ if (!pNotify) |
return; |
- } |
+ |
uint32_t dwPacket = GetPacketID(); |
- if (dwPacket & XFA_XDPPACKET_Form) { |
- FX_BOOL bNeedFindContainer = FALSE; |
- XFA_ELEMENT eType = GetClassID(); |
- switch (eType) { |
- case XFA_ELEMENT_Caption: |
- bNeedFindContainer = TRUE; |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, this, GetNodeItem(XFA_NODEITEM_Parent)); |
- break; |
- case XFA_ELEMENT_Font: |
- case XFA_ELEMENT_Para: { |
- bNeedFindContainer = TRUE; |
- CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
- if (pParentNode->GetClassID() == XFA_ELEMENT_Caption) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pParentNode, |
- pParentNode->GetNodeItem(XFA_NODEITEM_Parent)); |
- } else { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, this, pParentNode); |
- } |
- } break; |
- case XFA_ELEMENT_Margin: { |
- bNeedFindContainer = TRUE; |
- CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
- XFA_ELEMENT eParentType = pParentNode->GetClassID(); |
- if (pParentNode->IsContainerNode()) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, this, pParentNode); |
- } else if (eParentType == XFA_ELEMENT_Caption) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pParentNode, |
- pParentNode->GetNodeItem(XFA_NODEITEM_Parent)); |
- } else { |
- CXFA_Node* pNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); |
- if (pNode && pNode->GetClassID() == XFA_ELEMENT_Ui) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pNode, |
- pNode->GetNodeItem(XFA_NODEITEM_Parent)); |
- } |
- } |
- } break; |
- case XFA_ELEMENT_Comb: { |
- CXFA_Node* pEditNode = GetNodeItem(XFA_NODEITEM_Parent); |
- XFA_ELEMENT eUIType = pEditNode->GetClassID(); |
- if (pEditNode && (eUIType == XFA_ELEMENT_DateTimeEdit || |
- eUIType == XFA_ELEMENT_NumericEdit || |
- eUIType == XFA_ELEMENT_TextEdit)) { |
- CXFA_Node* pUINode = pEditNode->GetNodeItem(XFA_NODEITEM_Parent); |
- if (pUINode) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pUINode, |
- pUINode->GetNodeItem(XFA_NODEITEM_Parent)); |
- } |
- } |
- } break; |
- case XFA_ELEMENT_Button: |
- case XFA_ELEMENT_Barcode: |
- case XFA_ELEMENT_ChoiceList: |
- case XFA_ELEMENT_DateTimeEdit: |
- case XFA_ELEMENT_NumericEdit: |
- case XFA_ELEMENT_PasswordEdit: |
- case XFA_ELEMENT_TextEdit: { |
- CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent); |
- if (pUINode) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pUINode, |
- pUINode->GetNodeItem(XFA_NODEITEM_Parent)); |
+ if (!(dwPacket & XFA_XDPPACKET_Form)) { |
+ pNotify->OnValueChanged(this, eAttribute, this, this); |
+ return; |
+ } |
+ |
+ bool bNeedFindContainer = false; |
+ XFA_ELEMENT eType = GetClassID(); |
+ switch (eType) { |
+ case XFA_ELEMENT_Caption: |
+ bNeedFindContainer = true; |
+ pNotify->OnValueChanged(this, eAttribute, this, |
+ GetNodeItem(XFA_NODEITEM_Parent)); |
+ break; |
+ case XFA_ELEMENT_Font: |
+ case XFA_ELEMENT_Para: { |
+ bNeedFindContainer = true; |
+ CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
+ if (pParentNode->GetClassID() == XFA_ELEMENT_Caption) { |
+ pNotify->OnValueChanged(this, eAttribute, pParentNode, |
+ pParentNode->GetNodeItem(XFA_NODEITEM_Parent)); |
+ } else { |
+ pNotify->OnValueChanged(this, eAttribute, this, pParentNode); |
+ } |
+ } break; |
+ case XFA_ELEMENT_Margin: { |
+ bNeedFindContainer = true; |
+ CXFA_Node* pParentNode = GetNodeItem(XFA_NODEITEM_Parent); |
+ XFA_ELEMENT eParentType = pParentNode->GetClassID(); |
+ if (pParentNode->IsContainerNode()) { |
+ pNotify->OnValueChanged(this, eAttribute, this, pParentNode); |
+ } else if (eParentType == XFA_ELEMENT_Caption) { |
+ pNotify->OnValueChanged(this, eAttribute, pParentNode, |
+ pParentNode->GetNodeItem(XFA_NODEITEM_Parent)); |
+ } else { |
+ CXFA_Node* pNode = pParentNode->GetNodeItem(XFA_NODEITEM_Parent); |
+ if (pNode && pNode->GetClassID() == XFA_ELEMENT_Ui) { |
+ pNotify->OnValueChanged(this, eAttribute, pNode, |
+ pNode->GetNodeItem(XFA_NODEITEM_Parent)); |
} |
- } break; |
- case XFA_ELEMENT_CheckButton: { |
- bNeedFindContainer = TRUE; |
- CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent); |
+ } |
+ } break; |
+ case XFA_ELEMENT_Comb: { |
+ CXFA_Node* pEditNode = GetNodeItem(XFA_NODEITEM_Parent); |
+ XFA_ELEMENT eUIType = pEditNode->GetClassID(); |
+ if (pEditNode && (eUIType == XFA_ELEMENT_DateTimeEdit || |
+ eUIType == XFA_ELEMENT_NumericEdit || |
+ eUIType == XFA_ELEMENT_TextEdit)) { |
+ CXFA_Node* pUINode = pEditNode->GetNodeItem(XFA_NODEITEM_Parent); |
if (pUINode) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pUINode, |
- pUINode->GetNodeItem(XFA_NODEITEM_Parent)); |
+ pNotify->OnValueChanged(this, eAttribute, pUINode, |
+ pUINode->GetNodeItem(XFA_NODEITEM_Parent)); |
} |
- } break; |
- case XFA_ELEMENT_Keep: |
- case XFA_ELEMENT_Bookend: |
- case XFA_ELEMENT_Break: |
- case XFA_ELEMENT_BreakAfter: |
- case XFA_ELEMENT_BreakBefore: |
- case XFA_ELEMENT_Overflow: |
- bNeedFindContainer = TRUE; |
- break; |
- case XFA_ELEMENT_Area: |
- case XFA_ELEMENT_Draw: |
- case XFA_ELEMENT_ExclGroup: |
- case XFA_ELEMENT_Field: |
- case XFA_ELEMENT_Subform: |
- case XFA_ELEMENT_SubformSet: |
- pLayoutPro->AddChangedContainer(this); |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, this, this); |
- break; |
- case XFA_ELEMENT_Sharptext: |
- case XFA_ELEMENT_Sharpxml: |
- case XFA_ELEMENT_SharpxHTML: { |
- CXFA_Node* pTextNode = GetNodeItem(XFA_NODEITEM_Parent); |
- if (!pTextNode) { |
- return; |
- } |
- CXFA_Node* pValueNode = pTextNode->GetNodeItem(XFA_NODEITEM_Parent); |
- if (!pValueNode) { |
- return; |
+ } |
+ } break; |
+ case XFA_ELEMENT_Button: |
+ case XFA_ELEMENT_Barcode: |
+ case XFA_ELEMENT_ChoiceList: |
+ case XFA_ELEMENT_DateTimeEdit: |
+ case XFA_ELEMENT_NumericEdit: |
+ case XFA_ELEMENT_PasswordEdit: |
+ case XFA_ELEMENT_TextEdit: { |
+ CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent); |
+ if (pUINode) { |
+ pNotify->OnValueChanged(this, eAttribute, pUINode, |
+ pUINode->GetNodeItem(XFA_NODEITEM_Parent)); |
+ } |
+ } break; |
+ case XFA_ELEMENT_CheckButton: { |
+ bNeedFindContainer = true; |
+ CXFA_Node* pUINode = GetNodeItem(XFA_NODEITEM_Parent); |
+ if (pUINode) { |
+ pNotify->OnValueChanged(this, eAttribute, pUINode, |
+ pUINode->GetNodeItem(XFA_NODEITEM_Parent)); |
+ } |
+ } break; |
+ case XFA_ELEMENT_Keep: |
+ case XFA_ELEMENT_Bookend: |
+ case XFA_ELEMENT_Break: |
+ case XFA_ELEMENT_BreakAfter: |
+ case XFA_ELEMENT_BreakBefore: |
+ case XFA_ELEMENT_Overflow: |
+ bNeedFindContainer = true; |
+ break; |
+ case XFA_ELEMENT_Area: |
+ case XFA_ELEMENT_Draw: |
+ case XFA_ELEMENT_ExclGroup: |
+ case XFA_ELEMENT_Field: |
+ case XFA_ELEMENT_Subform: |
+ case XFA_ELEMENT_SubformSet: |
+ pLayoutPro->AddChangedContainer(this); |
+ pNotify->OnValueChanged(this, eAttribute, this, this); |
+ break; |
+ case XFA_ELEMENT_Sharptext: |
+ case XFA_ELEMENT_Sharpxml: |
+ case XFA_ELEMENT_SharpxHTML: { |
+ CXFA_Node* pTextNode = GetNodeItem(XFA_NODEITEM_Parent); |
+ if (!pTextNode) { |
+ return; |
+ } |
+ CXFA_Node* pValueNode = pTextNode->GetNodeItem(XFA_NODEITEM_Parent); |
+ if (!pValueNode) { |
+ return; |
+ } |
+ XFA_ELEMENT eType = pValueNode->GetClassID(); |
+ if (eType == XFA_ELEMENT_Value) { |
+ bNeedFindContainer = true; |
+ CXFA_Node* pNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); |
+ if (pNode && pNode->IsContainerNode()) { |
+ if (bScriptModify) { |
+ pValueNode = pNode; |
+ } |
+ pNotify->OnValueChanged(this, eAttribute, pValueNode, pNode); |
+ } else { |
+ pNotify->OnValueChanged(this, eAttribute, pNode, |
+ pNode->GetNodeItem(XFA_NODEITEM_Parent)); |
} |
- XFA_ELEMENT eType = pValueNode->GetClassID(); |
- if (eType == XFA_ELEMENT_Value) { |
- bNeedFindContainer = TRUE; |
+ } else { |
+ if (eType == XFA_ELEMENT_Items) { |
CXFA_Node* pNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); |
if (pNode && pNode->IsContainerNode()) { |
- if (bScriptModify) { |
- pValueNode = pNode; |
- } |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pValueNode, pNode); |
- } else { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pNode, |
- pNode->GetNodeItem(XFA_NODEITEM_Parent)); |
- } |
- } else { |
- if (eType == XFA_ELEMENT_Items) { |
- CXFA_Node* pNode = pValueNode->GetNodeItem(XFA_NODEITEM_Parent); |
- if (pNode && pNode->IsContainerNode()) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, |
- eValue, pValueNode, pNode); |
- } |
+ pNotify->OnValueChanged(this, eAttribute, pValueNode, pNode); |
} |
} |
- } break; |
- default: |
- break; |
- } |
- if (bNeedFindContainer) { |
- CXFA_Node* pParent = this; |
- while (pParent) { |
- if (pParent->IsContainerNode()) { |
- break; |
- } |
- pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent); |
} |
- if (pParent) { |
- pLayoutPro->AddChangedContainer(pParent); |
+ } break; |
+ default: |
+ break; |
+ } |
+ if (bNeedFindContainer) { |
+ CXFA_Node* pParent = this; |
+ while (pParent) { |
+ if (pParent->IsContainerNode()) { |
+ break; |
} |
+ pParent = pParent->GetNodeItem(XFA_NODEITEM_Parent); |
+ } |
+ if (pParent) { |
+ pLayoutPro->AddChangedContainer(pParent); |
} |
- } else { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanged, eAttribute, eValue, |
- this, this); |
} |
} |
+ |
void CXFA_Node::Script_Attribute_String(FXJSE_HVALUE hValue, |
FX_BOOL bSetting, |
XFA_ATTRIBUTE eAttribute) { |
@@ -3754,7 +3743,7 @@ FX_BOOL CXFA_Node::HasAttribute(XFA_ATTRIBUTE eAttr, FX_BOOL bCanInherit) { |
} |
FX_BOOL CXFA_Node::SetAttribute(XFA_ATTRIBUTE eAttr, |
const CFX_WideStringC& wsValue, |
- FX_BOOL bNotify) { |
+ bool bNotify) { |
const XFA_ATTRIBUTEINFO* pAttr = XFA_GetAttributeByID(eAttr); |
if (pAttr == NULL) { |
return FALSE; |
@@ -3850,7 +3839,7 @@ FX_BOOL CXFA_Node::GetAttribute(XFA_ATTRIBUTE eAttr, |
} |
FX_BOOL CXFA_Node::SetAttribute(const CFX_WideStringC& wsAttr, |
const CFX_WideStringC& wsValue, |
- FX_BOOL bNotify) { |
+ bool bNotify) { |
const XFA_ATTRIBUTEINFO* pAttributeInfo = XFA_GetAttributeByName(wsValue); |
if (pAttributeInfo) { |
return SetAttribute(pAttributeInfo->eName, wsValue, bNotify); |
@@ -3908,15 +3897,17 @@ FX_BOOL CXFA_Node::TryEnum(XFA_ATTRIBUTE eAttr, |
eValue = (XFA_ATTRIBUTEENUM)(uintptr_t)pValue; |
return TRUE; |
} |
+ |
FX_BOOL CXFA_Node::SetMeasure(XFA_ATTRIBUTE eAttr, |
CXFA_Measurement mValue, |
- FX_BOOL bNotify) { |
+ bool bNotify) { |
void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
- OnChanging(eAttr, &mValue, bNotify); |
+ OnChanging(eAttr, bNotify); |
SetMapModuleBuffer(pKey, &mValue, sizeof(CXFA_Measurement)); |
- OnChanged(eAttr, &mValue, bNotify); |
+ OnChanged(eAttr, bNotify, FALSE); |
return TRUE; |
} |
+ |
FX_BOOL CXFA_Node::TryMeasure(XFA_ATTRIBUTE eAttr, |
CXFA_Measurement& mValue, |
FX_BOOL bUseDefault) const { |
@@ -3943,10 +3934,10 @@ CXFA_Measurement CXFA_Node::GetMeasure(XFA_ATTRIBUTE eAttr) const { |
FX_BOOL CXFA_Node::SetCData(XFA_ATTRIBUTE eAttr, |
const CFX_WideString& wsValue, |
- FX_BOOL bNotify, |
+ bool bNotify, |
FX_BOOL bScriptModify) { |
void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
- OnChanging(eAttr, (void*)wsValue.c_str(), bNotify); |
+ OnChanging(eAttr, bNotify); |
if (eAttr == XFA_ATTRIBUTE_Value) { |
CFX_WideString* pClone = new CFX_WideString(wsValue); |
SetUserData(pKey, pClone, &deleteWideStringCallBack); |
@@ -3955,71 +3946,75 @@ FX_BOOL CXFA_Node::SetCData(XFA_ATTRIBUTE eAttr, |
if (eAttr == XFA_ATTRIBUTE_Name) |
UpdateNameHash(); |
} |
- OnChanged(eAttr, (void*)wsValue.c_str(), bNotify, bScriptModify); |
- if (IsNeedSavingXMLNode() && eAttr != XFA_ATTRIBUTE_QualifiedName && |
- eAttr != XFA_ATTRIBUTE_BindingNode) { |
- if (eAttr == XFA_ATTRIBUTE_Name && |
- (m_eNodeClass == XFA_ELEMENT_DataValue || |
- m_eNodeClass == XFA_ELEMENT_DataGroup)) { |
- return TRUE; |
- } |
- if (eAttr == XFA_ATTRIBUTE_Value) { |
- FDE_XMLNODETYPE eXMLType = m_pXMLNode->GetType(); |
- switch (eXMLType) { |
- case FDE_XMLNODE_Element: |
- if (IsAttributeInXML()) { |
- static_cast<CFDE_XMLElement*>(m_pXMLNode) |
- ->SetString(GetCData(XFA_ATTRIBUTE_QualifiedName), wsValue); |
- } else { |
- FX_BOOL bDeleteChildren = TRUE; |
- if (GetPacketID() == XFA_XDPPACKET_Datasets) { |
- for (CXFA_Node* pChildDataNode = |
- GetNodeItem(XFA_NODEITEM_FirstChild); |
- pChildDataNode; pChildDataNode = pChildDataNode->GetNodeItem( |
- XFA_NODEITEM_NextSibling)) { |
- CXFA_NodeArray formNodes; |
- if (pChildDataNode->GetBindItems(formNodes) > 0) { |
- bDeleteChildren = FALSE; |
- break; |
- } |
+ OnChanged(eAttr, bNotify, bScriptModify); |
+ |
+ if (!IsNeedSavingXMLNode() || eAttr == XFA_ATTRIBUTE_QualifiedName || |
+ eAttr == XFA_ATTRIBUTE_BindingNode) { |
+ return TRUE; |
+ } |
+ |
+ if (eAttr == XFA_ATTRIBUTE_Name && (m_eNodeClass == XFA_ELEMENT_DataValue || |
+ m_eNodeClass == XFA_ELEMENT_DataGroup)) { |
+ return TRUE; |
+ } |
+ |
+ if (eAttr == XFA_ATTRIBUTE_Value) { |
+ FDE_XMLNODETYPE eXMLType = m_pXMLNode->GetType(); |
+ switch (eXMLType) { |
+ case FDE_XMLNODE_Element: |
+ if (IsAttributeInXML()) { |
+ static_cast<CFDE_XMLElement*>(m_pXMLNode) |
+ ->SetString(GetCData(XFA_ATTRIBUTE_QualifiedName), wsValue); |
+ } else { |
+ FX_BOOL bDeleteChildren = TRUE; |
+ if (GetPacketID() == XFA_XDPPACKET_Datasets) { |
+ for (CXFA_Node* pChildDataNode = |
+ GetNodeItem(XFA_NODEITEM_FirstChild); |
+ pChildDataNode; pChildDataNode = pChildDataNode->GetNodeItem( |
+ XFA_NODEITEM_NextSibling)) { |
+ CXFA_NodeArray formNodes; |
+ if (pChildDataNode->GetBindItems(formNodes) > 0) { |
+ bDeleteChildren = FALSE; |
+ break; |
} |
} |
- if (bDeleteChildren) { |
- static_cast<CFDE_XMLElement*>(m_pXMLNode)->DeleteChildren(); |
- } |
- static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetTextData(wsValue); |
} |
- break; |
- case FDE_XMLNODE_Text: |
- static_cast<CFDE_XMLText*>(m_pXMLNode)->SetText(wsValue); |
- break; |
- default: |
- FXSYS_assert(0); |
- } |
- return TRUE; |
+ if (bDeleteChildren) { |
+ static_cast<CFDE_XMLElement*>(m_pXMLNode)->DeleteChildren(); |
+ } |
+ static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetTextData(wsValue); |
+ } |
+ break; |
+ case FDE_XMLNODE_Text: |
+ static_cast<CFDE_XMLText*>(m_pXMLNode)->SetText(wsValue); |
+ break; |
+ default: |
+ FXSYS_assert(0); |
} |
- const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttr); |
- if (pInfo) { |
- FXSYS_assert(m_pXMLNode->GetType() == FDE_XMLNODE_Element); |
- CFX_WideString wsAttrName = pInfo->pName; |
- if (pInfo->eName == XFA_ATTRIBUTE_ContentType) { |
- wsAttrName = FX_WSTRC(L"xfa:") + wsAttrName; |
- } |
- static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetString(wsAttrName, wsValue); |
+ return TRUE; |
+ } |
+ |
+ const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttr); |
+ if (pInfo) { |
+ FXSYS_assert(m_pXMLNode->GetType() == FDE_XMLNODE_Element); |
+ CFX_WideString wsAttrName = pInfo->pName; |
+ if (pInfo->eName == XFA_ATTRIBUTE_ContentType) { |
+ wsAttrName = FX_WSTRC(L"xfa:") + wsAttrName; |
} |
+ static_cast<CFDE_XMLElement*>(m_pXMLNode)->SetString(wsAttrName, wsValue); |
} |
return TRUE; |
} |
+ |
FX_BOOL CXFA_Node::SetAttributeValue(const CFX_WideString& wsValue, |
const CFX_WideString& wsXMLValue, |
- FX_BOOL bNotify, |
+ bool bNotify, |
FX_BOOL bScriptModify) { |
void* pKey = XFA_GetMapKey_Element(GetClassID(), XFA_ATTRIBUTE_Value); |
- OnChanging(XFA_ATTRIBUTE_Value, (void*)wsValue.c_str(), bNotify); |
+ OnChanging(XFA_ATTRIBUTE_Value, bNotify); |
CFX_WideString* pClone = new CFX_WideString(wsValue); |
SetUserData(pKey, pClone, &deleteWideStringCallBack); |
- OnChanged(XFA_ATTRIBUTE_Value, (void*)wsValue.c_str(), bNotify, |
- bScriptModify); |
+ OnChanged(XFA_ATTRIBUTE_Value, bNotify, bScriptModify); |
if (IsNeedSavingXMLNode()) { |
FDE_XMLNODETYPE eXMLType = m_pXMLNode->GetType(); |
switch (eXMLType) { |
@@ -4126,11 +4121,11 @@ FX_BOOL CXFA_Node::TryObject(XFA_ATTRIBUTE eAttr, void*& pData) { |
FX_BOOL CXFA_Node::SetValue(XFA_ATTRIBUTE eAttr, |
XFA_ATTRIBUTETYPE eType, |
void* pValue, |
- FX_BOOL bNotify) { |
+ bool bNotify) { |
void* pKey = XFA_GetMapKey_Element(GetClassID(), eAttr); |
- OnChanging(eAttr, pValue, bNotify); |
+ OnChanging(eAttr, bNotify); |
SetMapModuleValue(pKey, pValue); |
- OnChanged(eAttr, pValue, bNotify); |
+ OnChanged(eAttr, bNotify, FALSE); |
if (IsNeedSavingXMLNode()) { |
FXSYS_assert(m_pXMLNode->GetType() == FDE_XMLNODE_Element); |
const XFA_ATTRIBUTEINFO* pInfo = XFA_GetAttributeByID(eAttr); |
@@ -4192,7 +4187,7 @@ FX_BOOL CXFA_Node::TryUserData(void* pKey, void*& pData, FX_BOOL bProtoAlso) { |
} |
FX_BOOL CXFA_Node::SetScriptContent(const CFX_WideString& wsContent, |
const CFX_WideString& wsXMLValue, |
- FX_BOOL bNotify, |
+ bool bNotify, |
FX_BOOL bScriptModify, |
FX_BOOL bSyncData) { |
CXFA_Node* pNode = NULL; |
@@ -4368,7 +4363,7 @@ FX_BOOL CXFA_Node::SetScriptContent(const CFX_WideString& wsContent, |
} |
FX_BOOL CXFA_Node::SetContent(const CFX_WideString& wsContent, |
const CFX_WideString& wsXMLValue, |
- FX_BOOL bNotify, |
+ bool bNotify, |
FX_BOOL bScriptModify, |
FX_BOOL bSyncData) { |
return SetScriptContent(wsContent, wsXMLValue, bNotify, bScriptModify, |
@@ -4620,9 +4615,9 @@ int32_t CXFA_Node::InsertChild(int32_t index, CXFA_Node* pNode) { |
ASSERT(m_pLastChild->m_pNext == NULL); |
pNode->SetFlag(XFA_NODEFLAG_HasRemoved, FALSE); |
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
- if (pNotify) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ChildAdded, pNode); |
- } |
+ if (pNotify) |
+ pNotify->OnChildAdded(this); |
+ |
if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
FXSYS_assert(pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL); |
m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, index); |
@@ -4666,9 +4661,9 @@ FX_BOOL CXFA_Node::InsertChild(CXFA_Node* pNode, CXFA_Node* pBeforeNode) { |
ASSERT(m_pLastChild->m_pNext == NULL); |
pNode->SetFlag(XFA_NODEFLAG_HasRemoved, FALSE); |
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
- if (pNotify) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ChildAdded, pNode); |
- } |
+ if (pNotify) |
+ pNotify->OnChildAdded(this); |
+ |
if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
FXSYS_assert(pNode->m_pXMLNode->GetNodeItem(CFDE_XMLNode::Parent) == NULL); |
m_pXMLNode->InsertChildNode(pNode->m_pXMLNode, nIndex); |
@@ -4688,7 +4683,7 @@ CXFA_Node* CXFA_Node::Deprecated_GetPrevSibling() { |
} |
return NULL; |
} |
-FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, FX_BOOL bNotify) { |
+FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, bool bNotify) { |
if (pNode == NULL || pNode->m_pParent != this) { |
FXSYS_assert(FALSE); |
return FALSE; |
@@ -4710,7 +4705,7 @@ FX_BOOL CXFA_Node::RemoveChild(CXFA_Node* pNode, FX_BOOL bNotify) { |
pNode->m_pParent = NULL; |
} |
ASSERT(m_pLastChild == NULL || m_pLastChild->m_pNext == NULL); |
- OnRemoved(this, pNode, bNotify); |
+ OnRemoved(bNotify); |
pNode->SetFlag(XFA_NODEFLAG_HasRemoved); |
m_pDocument->AddPurgeNode(pNode); |
if (IsNeedSavingXMLNode() && pNode->m_pXMLNode) { |
@@ -4851,58 +4846,53 @@ FX_BOOL CXFA_Node::HasFlag(uint32_t dwFlag) const { |
} |
return FALSE; |
} |
-void CXFA_Node::SetFlag(uint32_t dwFlag, FX_BOOL bOn, FX_BOOL bNotify) { |
- if (bOn) { |
- switch (dwFlag) { |
- case XFA_NODEFLAG_Initialized: |
- if (bNotify && !HasFlag(XFA_NODEFLAG_Initialized)) { |
- CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
- if (pNotify) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_Ready); |
- } |
- } |
- break; |
- default: |
- break; |
- } |
- m_uFlags |= dwFlag; |
- } else { |
+ |
+void CXFA_Node::SetFlag(uint32_t dwFlag, FX_BOOL bOn, bool bNotify) { |
Tom Sepez
2016/04/14 22:08:55
might be worth having a separate ClearFlag rather
Lei Zhang
2016/04/15 01:16:41
Done.
|
+ if (!bOn) { |
m_uFlags &= ~dwFlag; |
+ return; |
+ } |
+ |
+ if (dwFlag == XFA_NODEFLAG_Initialized && bNotify && |
+ !HasFlag(XFA_NODEFLAG_Initialized)) { |
+ CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
+ if (pNotify) { |
+ pNotify->OnNodeReady(this); |
+ } |
} |
+ m_uFlags |= dwFlag; |
} |
+ |
FX_BOOL CXFA_Node::IsAttributeInXML() { |
return GetEnum(XFA_ATTRIBUTE_Contains) == XFA_ATTRIBUTEENUM_MetaData; |
} |
-void CXFA_Node::OnRemoved(CXFA_Node* pParent, |
- CXFA_Node* pRemoved, |
- FX_BOOL bNotify) { |
- if (bNotify && pParent) { |
+ |
+void CXFA_Node::OnRemoved(bool bNotify) { |
+ if (bNotify) { |
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
if (pNotify) { |
- pNotify->OnNodeEvent(pParent, XFA_NODEEVENT_ChildRemoved, pRemoved); |
+ pNotify->OnChildRemoved(); |
} |
} |
} |
-void CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr, |
- void* pNewValue, |
- FX_BOOL bNotify) { |
+ |
+void CXFA_Node::OnChanging(XFA_ATTRIBUTE eAttr, bool bNotify) { |
if (bNotify && HasFlag(XFA_NODEFLAG_Initialized)) { |
CXFA_FFNotify* pNotify = m_pDocument->GetParser()->GetNotify(); |
if (pNotify) { |
- pNotify->OnNodeEvent(this, XFA_NODEEVENT_ValueChanging, |
- (void*)(uintptr_t)eAttr, pNewValue); |
+ pNotify->OnValueChanging(this, eAttr); |
} |
} |
} |
+ |
void CXFA_Node::OnChanged(XFA_ATTRIBUTE eAttr, |
- void* pNewValue, |
- FX_BOOL bNotify, |
+ bool bNotify, |
FX_BOOL bScriptModify) { |
if (bNotify && HasFlag(XFA_NODEFLAG_Initialized)) { |
- Script_Attribute_SendAttributeChangeMessage((void*)(uintptr_t)eAttr, |
- pNewValue, bScriptModify); |
+ Script_Attribute_SendAttributeChangeMessage(eAttr, bScriptModify); |
} |
} |
+ |
int32_t CXFA_Node::execSingleEventByName(const CFX_WideStringC& wsEventName, |
XFA_ELEMENT eElementType) { |
int32_t iRet = XFA_EVENTERROR_NotExist; |