From ccac1f179d0f6ed9c5ba5ac2d29070c4e62b7e1e Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Fri, 19 Oct 2018 15:08:01 +0200 Subject: sw_redlinehide_3: add flag to SwNodeNum Disable the NumRule/DocumentListsItemManager manipulations on the second tree; only the "main" tree does that. Change-Id: I0da8ced53f8d55758e3c02fd24b9253bbf603b38 --- sw/inc/SwNodeNum.hxx | 7 +++++-- sw/source/core/SwNumberTree/SwNodeNum.cxx | 23 ++++++++++++----------- sw/source/core/txtnode/ndtxt.cxx | 4 ++-- 3 files changed, 19 insertions(+), 15 deletions(-) (limited to 'sw') diff --git a/sw/inc/SwNodeNum.hxx b/sw/inc/SwNodeNum.hxx index d9e61b115b55..cb277b7e7880 100644 --- a/sw/inc/SwNodeNum.hxx +++ b/sw/inc/SwNodeNum.hxx @@ -30,7 +30,9 @@ class SW_DLLPUBLIC SwNodeNum : public SwNumberTreeNode { public: - explicit SwNodeNum( SwTextNode* pTextNode ); + explicit SwNodeNum( SwTextNode* pTextNode, bool isHiddenRedlines ); + // note: this is only for creating phantom nodes and root nodes; these + // never have a text node explicit SwNodeNum( SwNumRule* pNumRule ); virtual ~SwNodeNum() override; @@ -79,8 +81,9 @@ protected: // method called at a child after this child has been removed from the list tree virtual void PostRemove() override; private: - SwTextNode * mpTextNode; + SwTextNode *const mpTextNode; SwNumRule * mpNumRule; + bool m_isHiddenRedlines; static void UnregisterMeAndChildrenDueToRootDelete( SwNodeNum& rNodeNum ); diff --git a/sw/source/core/SwNumberTree/SwNodeNum.cxx b/sw/source/core/SwNumberTree/SwNodeNum.cxx index 72d5691e987a..40bf1b2eb0c2 100644 --- a/sw/source/core/SwNumberTree/SwNodeNum.cxx +++ b/sw/source/core/SwNumberTree/SwNodeNum.cxx @@ -27,17 +27,17 @@ #include #include -SwNodeNum::SwNodeNum( SwTextNode* pTextNode ) - : SwNumberTreeNode(), - mpTextNode( pTextNode ), - mpNumRule( nullptr ) +SwNodeNum::SwNodeNum(SwTextNode* pTextNode, bool const isHiddenRedlines) + : mpTextNode( pTextNode ) + , mpNumRule( nullptr ) + , m_isHiddenRedlines(isHiddenRedlines) { } SwNodeNum::SwNodeNum( SwNumRule* pNumRule ) - : SwNumberTreeNode(), - mpTextNode( nullptr ), - mpNumRule( pNumRule ) + : mpTextNode( nullptr ) + , mpNumRule( pNumRule ) + , m_isHiddenRedlines(false) { } @@ -87,11 +87,12 @@ void SwNodeNum::PreAdd() } OSL_ENSURE( GetNumRule(), " - no list style set at instance" ); - if ( GetNumRule() && GetTextNode() ) + if (!m_isHiddenRedlines && GetNumRule() && GetTextNode()) { GetNumRule()->AddTextNode( *(GetTextNode()) ); } + if (!m_isHiddenRedlines) { if ( GetTextNode() && GetTextNode()->GetNodes().IsDocNodes() ) @@ -108,14 +109,14 @@ void SwNodeNum::PostRemove() OSL_ENSURE( GetNumRule(), " - no list style set at instance" ); - if ( GetTextNode() ) + if (!m_isHiddenRedlines && GetTextNode()) { GetTextNode()->getIDocumentListItems().removeListItem( *this ); } if ( GetNumRule() ) { - if ( GetTextNode() ) + if (!m_isHiddenRedlines && GetTextNode()) { GetNumRule()->RemoveTextNode( *(GetTextNode()) ); } @@ -370,7 +371,7 @@ const SwNodeNum* SwNodeNum::GetPrecedingNodeNumOf( const SwTextNode& rTextNode ) const SwNodeNum* pPrecedingNodeNum( nullptr ); // #i83479# - SwNodeNum aNodeNumForTextNode( const_cast(&rTextNode) ); + SwNodeNum aNodeNumForTextNode( const_cast(&rTextNode), false/*doesn't matter*/ ); pPrecedingNodeNum = dynamic_cast( GetRoot() diff --git a/sw/source/core/txtnode/ndtxt.cxx b/sw/source/core/txtnode/ndtxt.cxx index 9638231a2ed9..f66dd2ab7d4e 100644 --- a/sw/source/core/txtnode/ndtxt.cxx +++ b/sw/source/core/txtnode/ndtxt.cxx @@ -3961,7 +3961,7 @@ SwNodeNum* SwTextNode::CreateNum() const { if ( !mpNodeNum ) { - mpNodeNum = new SwNodeNum( const_cast(this) ); + mpNodeNum = new SwNodeNum( const_cast(this), false ); } return mpNodeNum; } @@ -4258,7 +4258,7 @@ void SwTextNode::AddToList() if (pList) { assert(!mpNodeNum); - mpNodeNum = new SwNodeNum(this); + mpNodeNum = new SwNodeNum(this, false); pList->InsertListItem(*mpNodeNum, false, GetAttrListLevel()); } } -- cgit