summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fxjs/xfa/cjx_field.cpp4
-rw-r--r--xfa/fxfa/cxfa_widgetacc.cpp10
-rw-r--r--xfa/fxfa/cxfa_widgetacc.h7
-rw-r--r--xfa/fxfa/parser/cxfa_node.cpp2
-rw-r--r--xfa/fxfa/parser/cxfa_node.h7
5 files changed, 14 insertions, 16 deletions
diff --git a/fxjs/xfa/cjx_field.cpp b/fxjs/xfa/cjx_field.cpp
index 2af988f1fe..828bfb9a0d 100644
--- a/fxjs/xfa/cjx_field.cpp
+++ b/fxjs/xfa/cjx_field.cpp
@@ -248,8 +248,8 @@ void CJX_Field::defaultValue(CFXJSE_Value* pValue,
CXFA_WidgetAcc* pWidgetAcc = xfaNode->GetWidgetAcc();
if (bSetting) {
if (pValue) {
- pWidgetAcc->SetPreNull(pWidgetAcc->IsNull());
- pWidgetAcc->SetIsNull(pValue->IsNull());
+ xfaNode->SetPreNull(xfaNode->IsNull());
+ xfaNode->SetIsNull(pValue->IsNull());
}
WideString wsNewText;
diff --git a/xfa/fxfa/cxfa_widgetacc.cpp b/xfa/fxfa/cxfa_widgetacc.cpp
index 49ccade894..4fa744a098 100644
--- a/xfa/fxfa/cxfa_widgetacc.cpp
+++ b/xfa/fxfa/cxfa_widgetacc.cpp
@@ -348,10 +348,7 @@ bool SplitDateTime(const WideString& wsDateTime,
} // namespace
-CXFA_WidgetAcc::CXFA_WidgetAcc(CXFA_Node* pNode)
- : m_bIsNull(true),
- m_bPreNull(true),
- m_pNode(pNode) {}
+CXFA_WidgetAcc::CXFA_WidgetAcc(CXFA_Node* pNode) : m_pNode(pNode) {}
CXFA_WidgetAcc::~CXFA_WidgetAcc() = default;
@@ -2132,8 +2129,9 @@ bool CXFA_WidgetAcc::SetValue(XFA_VALUEPICTURE eValueType,
return true;
}
- m_bPreNull = m_bIsNull;
- m_bIsNull = false;
+ m_pNode->SetPreNull(m_pNode->IsNull());
+ m_pNode->SetIsNull(false);
+
WideString wsNewText(wsValue);
WideString wsPicture = GetPictureContent(eValueType);
bool bValidate = true;
diff --git a/xfa/fxfa/cxfa_widgetacc.h b/xfa/fxfa/cxfa_widgetacc.h
index ac885cb2f2..8f0bf3948b 100644
--- a/xfa/fxfa/cxfa_widgetacc.h
+++ b/xfa/fxfa/cxfa_widgetacc.h
@@ -176,11 +176,6 @@ class CXFA_WidgetAcc {
int32_t iLead,
int32_t iTread) const;
- bool IsPreNull() const { return m_bPreNull; }
- void SetPreNull(bool val) { m_bPreNull = val; }
- bool IsNull() const { return m_bIsNull; }
- void SetIsNull(bool val) { m_bIsNull = val; }
-
private:
void CalcCaptionSize(CXFA_FFDoc* doc, CFX_SizeF& szCap);
bool CalculateFieldAutoSize(CXFA_FFDoc* doc, CFX_SizeF& size);
@@ -213,8 +208,6 @@ class CXFA_WidgetAcc {
void GetItemLabel(const WideStringView& wsValue, WideString& wsLabel);
std::unique_ptr<CXFA_WidgetLayoutData> m_pLayoutData;
- bool m_bIsNull;
- bool m_bPreNull;
CXFA_Node* m_pNode;
};
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 935392373a..6a510cc0d4 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -1992,7 +1992,7 @@ int32_t CXFA_Node::ProcessNullTestValidate(CXFA_FFDocView* docView,
bool bVersionFlag) {
if (!GetWidgetAcc()->GetValue(XFA_VALUEPICTURE_Raw).IsEmpty())
return XFA_EVENTERROR_Success;
- if (GetWidgetAcc()->IsNull() && GetWidgetAcc()->IsPreNull())
+ if (m_bIsNull && m_bPreNull)
return XFA_EVENTERROR_Success;
XFA_AttributeEnum eNullTest = validate->GetNullTest();
diff --git a/xfa/fxfa/parser/cxfa_node.h b/xfa/fxfa/parser/cxfa_node.h
index 4fae752ea0..e99180e0dd 100644
--- a/xfa/fxfa/parser/cxfa_node.h
+++ b/xfa/fxfa/parser/cxfa_node.h
@@ -299,6 +299,11 @@ class CXFA_Node : public CXFA_Object {
CFX_RectF GetUIMargin();
CXFA_Border* GetUIBorder();
+ bool IsPreNull() const { return m_bPreNull; }
+ void SetPreNull(bool val) { m_bPreNull = val; }
+ bool IsNull() const { return m_bIsNull; }
+ void SetIsNull(bool val) { m_bIsNull = val; }
+
protected:
CXFA_Node(CXFA_Document* pDoc,
XFA_PacketType ePacket,
@@ -364,6 +369,8 @@ class CXFA_Node : public CXFA_Object {
std::vector<UnownedPtr<CXFA_Node>> binding_nodes_;
CXFA_Node* m_pUiChildNode = nullptr;
XFA_Element m_eUIType = XFA_Element::Unknown;
+ bool m_bIsNull = true;
+ bool m_bPreNull = true;
};
#endif // XFA_FXFA_PARSER_CXFA_NODE_H_