diff options
-rw-r--r-- | fxjs/xfa/cjx_field.cpp | 4 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_widgetacc.cpp | 10 | ||||
-rw-r--r-- | xfa/fxfa/cxfa_widgetacc.h | 7 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.cpp | 2 | ||||
-rw-r--r-- | xfa/fxfa/parser/cxfa_node.h | 7 |
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_ |