diff options
author | Michael Stahl <Michael.Stahl@cib.de> | 2018-10-19 15:08:01 +0200 |
---|---|---|
committer | Michael Stahl <Michael.Stahl@cib.de> | 2018-11-15 15:10:00 +0100 |
commit | ccac1f179d0f6ed9c5ba5ac2d29070c4e62b7e1e (patch) | |
tree | 9ce02e933e3a0135446870b649a048c29326a3cc /sw | |
parent | 26ce48bf407b0a027db70022bf95c0f98fe46c17 (diff) |
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
Diffstat (limited to 'sw')
-rw-r--r-- | sw/inc/SwNodeNum.hxx | 7 | ||||
-rw-r--r-- | sw/source/core/SwNumberTree/SwNodeNum.cxx | 23 | ||||
-rw-r--r-- | sw/source/core/txtnode/ndtxt.cxx | 4 |
3 files changed, 19 insertions, 15 deletions
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 <IDocumentListItems.hxx> #include <doc.hxx> -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(), "<SwNodeNum::PreAdd()> - no list style set at <SwNodeNum> 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(), "<SwNodeNum::PostRemove()> - no list style set at <SwNodeNum> 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<SwTextNode*>(&rTextNode) ); + SwNodeNum aNodeNumForTextNode( const_cast<SwTextNode*>(&rTextNode), false/*doesn't matter*/ ); pPrecedingNodeNum = dynamic_cast<const SwNodeNum*>( 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<SwTextNode*>(this) ); + mpNodeNum = new SwNodeNum( const_cast<SwTextNode*>(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()); } } |