diff options
Diffstat (limited to '0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch')
-rw-r--r-- | 0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch b/0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch new file mode 100644 index 0000000..8840208 --- /dev/null +++ b/0001-tdf-121546-sw-don-t-use-undo-array-s-m_pOutlineNodes.patch @@ -0,0 +1,72 @@ +From bced744fea67d50242701ed55271d40e803ac14e Mon Sep 17 00:00:00 2001 +From: Michael Stahl <michael.stahl@allotropia.de> +Date: Mon, 15 Nov 2021 17:29:59 +0100 +Subject: [PATCH] tdf#121546 sw: don't use undo array's m_pOutlineNodes + +It's pointless. + +Change-Id: I304c123bffc16e6133d2953bc9a4f7a3afad14ef +--- + sw/source/core/docnode/ndnum.cxx | 2 ++ + sw/source/core/docnode/nodes.cxx | 18 ++++++++++++------ + 2 files changed, 14 insertions(+), 6 deletions(-) + +diff --git a/sw/source/core/docnode/ndnum.cxx b/sw/source/core/docnode/ndnum.cxx +index b3d66affa66e..a7b898ee5f0a 100644 +--- a/sw/source/core/docnode/ndnum.cxx ++++ b/sw/source/core/docnode/ndnum.cxx +@@ -38,6 +38,8 @@ bool SwOutlineNodes::Seek_Entry(SwNode* rP, size_type* pnPos) const + + void SwNodes::UpdateOutlineNode(SwNode & rNd) + { ++ assert(IsDocNodes()); // no point in m_pOutlineNodes for undo nodes ++ + SwTextNode * pTextNd = rNd.GetTextNode(); + + if (!(pTextNd && pTextNd->IsOutlineStateChanged())) +diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx +index a7a2078b2091..ab3eb62ac9f2 100644 +--- a/sw/source/core/docnode/nodes.cxx ++++ b/sw/source/core/docnode/nodes.cxx +@@ -109,6 +109,16 @@ SwNodes::~SwNodes() + m_pEndOfContent.reset(); + } + ++static bool IsInsertOutline(SwNodes const& rNodes, sal_uLong const nIndex) ++{ ++ if (!rNodes.IsDocNodes()) ++ { ++ return false; ++ } ++ return nIndex < rNodes.GetEndOfRedlines().StartOfSectionNode()->GetIndex() ++ || rNodes.GetEndOfRedlines().GetIndex() < nIndex; ++} ++ + void SwNodes::ChgNode( SwNodeIndex const & rDelPos, sal_uLong nSz, + SwNodeIndex& rInsPos, bool bNewFrames ) + { +@@ -124,9 +134,7 @@ void SwNodes::ChgNode( SwNodeIndex const & rDelPos, sal_uLong nSz, + + // NEVER include nodes from the RedLineArea + sal_uLong nNd = rInsPos.GetIndex(); +- bool bInsOutlineIdx = ( +- rNds.GetEndOfRedlines().StartOfSectionNode()->GetIndex() >= nNd || +- nNd >= rNds.GetEndOfRedlines().GetIndex() ); ++ bool const bInsOutlineIdx = IsInsertOutline(rNds, nNd); + + if( &rNds == this ) // if in the same node array -> move + { +@@ -478,9 +486,7 @@ bool SwNodes::MoveNodes( const SwNodeRange& aRange, SwNodes & rNodes, + + // NEVER include nodes from the RedLineArea + sal_uLong nNd = aIdx.GetIndex(); +- bool bInsOutlineIdx = ( rNodes.GetEndOfRedlines(). +- StartOfSectionNode()->GetIndex() >= nNd || +- nNd >= rNodes.GetEndOfRedlines().GetIndex() ); ++ bool const bInsOutlineIdx = IsInsertOutline(rNodes, nNd); + + if( bNewFrames ) + // delete all frames +-- +2.33.1 + |