diff options
Diffstat (limited to 'sw/inc')
-rw-r--r-- | sw/inc/IDocumentSettingAccess.hxx | 1 | ||||
-rw-r--r-- | sw/inc/doc.hxx | 3 | ||||
-rw-r--r-- | sw/inc/ndhints.hxx | 26 | ||||
-rw-r--r-- | sw/inc/ndtxt.hxx | 12 | ||||
-rw-r--r-- | sw/inc/viewsh.hxx | 2 |
5 files changed, 30 insertions, 14 deletions
diff --git a/sw/inc/IDocumentSettingAccess.hxx b/sw/inc/IDocumentSettingAccess.hxx index f152fef3ff26..7dbfdf5331dd 100644 --- a/sw/inc/IDocumentSettingAccess.hxx +++ b/sw/inc/IDocumentSettingAccess.hxx @@ -82,6 +82,7 @@ enum class DocumentSettingId SURROUND_TEXT_WRAP_SMALL, PROP_LINE_SPACING_SHRINKS_FIRST_LINE, SUBTRACT_FLYS, + EMPTY_DB_FIELD_HIDES_PARA, // COMPATIBILITY FLAGS END BROWSE_MODE, HTML_MODE, diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index 90ec57051f12..cdd82b1306b1 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -505,6 +505,9 @@ public: ::sw::DocumentFieldsManager & GetDocumentFieldsManager(); + bool FieldCanHidePara(sal_uInt16 eFieldId) const; + bool FieldHidesPara(const SwField& rField) const; + // IDocumentContentOperations IDocumentContentOperations const & getIDocumentContentOperations() const; IDocumentContentOperations & getIDocumentContentOperations(); diff --git a/sw/inc/ndhints.hxx b/sw/inc/ndhints.hxx index 6643a6a920c3..88f61a8700d7 100644 --- a/sw/inc/ndhints.hxx +++ b/sw/inc/ndhints.hxx @@ -77,6 +77,8 @@ class SwpHtEnd : public o3tl::sorted_vector<SwTextAttr*, CompareSwpHtEnd, class SwpHints { private: + const SwTextNode& m_rParent; + // SAL_MAX_SIZE is used by GetStartOf to return // failure, so just allow SAL_MAX_SIZE-1 hints static const size_t MAX_HINTS = SAL_MAX_SIZE-1; @@ -88,9 +90,11 @@ private: /// true: the Node is in Split and Frames are moved bool m_bInSplitNode : 1; - /// m_bHasHiddenParaField is invalid, call CalcHiddenParaField() - bool m_bCalcHiddenParaField : 1; - bool m_bHasHiddenParaField : 1; ///< HiddenParaField + // m_bHiddenByParaField is invalid, call CalcHiddenParaField() + mutable bool m_bCalcHiddenParaField : 1; + // if all fields controlling visibility of the paragraph require to hide it + // (if there's no such fields, or if any field requires to show, then this is false) + mutable bool m_bHiddenByParaField : 1; bool m_bFootnote : 1; ///< footnotes bool m_bDDEFields : 1; ///< the TextNode has DDE fields @@ -108,15 +112,15 @@ private: void Delete( SwTextAttr* pTextHt ); void SetInSplitNode(bool bInSplit) { m_bInSplitNode = bInSplit; } - void SetCalcHiddenParaField() { m_bCalcHiddenParaField = true; } - void SetHiddenParaField( const bool bNew ) { m_bHasHiddenParaField = bNew; } - bool HasHiddenParaField() const + void SetCalcHiddenParaField() const { m_bCalcHiddenParaField = true; } + void SetHiddenByParaField( const bool bNew ) const { m_bHiddenByParaField = bNew; } + bool IsHiddenByParaField() const { if ( m_bCalcHiddenParaField ) { - (const_cast<SwpHints*>(this))->CalcHiddenParaField(); + CalcHiddenParaField(); } - return m_bHasHiddenParaField; + return m_bHiddenByParaField; } void InsertNesting(SwTextAttrNesting & rNewHint); @@ -144,7 +148,7 @@ private: #endif public: - SwpHints(); + SwpHints(const SwTextNode& rParent); size_t Count() const { return m_HintsByStart.size(); } bool Contains( const SwTextAttr *pHt ) const; @@ -179,8 +183,8 @@ public: bool HasFootnote() const { return m_bFootnote; } bool IsInSplitNode() const { return m_bInSplitNode; } - /// calc current value of m_bHasHiddenParaField, returns true iff changed - bool CalcHiddenParaField(); + // calc current value of m_bHiddenByParaField, returns true iff changed + bool CalcHiddenParaField() const; // changes mutable state DECL_FIXEDMEMPOOL_NEWDEL(SwpHints) }; diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx index 87f4a7b28e81..73d44de8915e 100644 --- a/sw/inc/ndtxt.hxx +++ b/sw/inc/ndtxt.hxx @@ -21,6 +21,7 @@ #include <cppuhelper/weakref.hxx> +#include "doc.hxx" #include "swdllapi.h" #include <node.hxx> #include <hintids.hxx> @@ -702,8 +703,13 @@ public: { if (m_pSwpHints) m_pSwpHints->SetCalcHiddenParaField(); } /// is the paragraph visible? - inline bool HasHiddenParaField() const - { return m_pSwpHints && m_pSwpHints->HasHiddenParaField(); } + inline bool IsHiddenByParaField() const + { return m_pSwpHints && m_pSwpHints->IsHiddenByParaField(); } + + bool FieldCanHidePara(sal_uInt16 eFieldId) const + { return GetDoc()->FieldCanHidePara(eFieldId); } + bool FieldHidesPara(const SwField& rField) const + { return GetDoc()->FieldHidesPara(rField); } /// Hidden Paragraph Field: @@ -812,7 +818,7 @@ inline SwpHints& SwTextNode::GetOrCreateSwpHints() { if ( !m_pSwpHints ) { - m_pSwpHints = new SwpHints; + m_pSwpHints = new SwpHints(*this); } return *m_pSwpHints; } diff --git a/sw/inc/viewsh.hxx b/sw/inc/viewsh.hxx index 94d458753d7b..5b964fdcdbcb 100644 --- a/sw/inc/viewsh.hxx +++ b/sw/inc/viewsh.hxx @@ -420,6 +420,8 @@ public: void SetSubtractFlysAnchoredAtFlys(bool bSubtractFlysAnchoredAtFlys); + void SetEmptyDbFieldHidesPara(bool bEmptyDbFieldHidesPara); + // DOCUMENT COMPATIBILITY FLAGS END // Calls Idle-formatter of Layout. |