sw/inc/doc.hxx | 6 sw/source/core/doc/DocumentContentOperationsManager.cxx | 2 sw/source/core/doc/docnum.cxx | 191 +++++++++++++--- sw/source/core/edit/edattr.cxx | 6 sw/source/core/edit/ednumber.cxx | 23 + sw/source/core/inc/txtfrm.hxx | 2 sw/source/core/text/txtfrm.cxx | 17 + 7 files changed, 204 insertions(+), 43 deletions(-)
New commits: commit 488b2cc10916b98b176cc024862585b1f899638a Author: Michael Stahl <[email protected]> AuthorDate: Tue Oct 30 19:12:39 2018 +0100 Commit: Michael Stahl <[email protected]> CommitDate: Tue Oct 30 19:24:05 2018 +0100 sw_redlinehide_3: SwDoc::MoveParagraph() Change-Id: Ic4157d14c2a3ee7c90f103561a376ac6f753a694 diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index c4842f8af649..42b6b8869156 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -1118,6 +1118,7 @@ public: /** Move selected paragraphes (not only numberings) according to offsets. (if negative: go to doc start). */ bool MoveParagraph( const SwPaM&, long nOffset, bool bIsOutlMv = false ); + bool MoveParagraphImpl(const SwPaM&, long nOffset, bool bIsOutlMv, SwRootFrame const*); bool NumOrNoNum( const SwNodeIndex& rIdx, bool bDel = false); diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx index c0f52537baa3..80b45216e586 100644 --- a/sw/source/core/doc/docnum.cxx +++ b/sw/source/core/doc/docnum.cxx @@ -1792,7 +1792,93 @@ bool SwDoc::NumUpDown(const SwPaM& rPam, bool bDown, SwRootFrame const*const pLa return bRet; } -bool SwDoc::MoveParagraph( const SwPaM& rPam, long nOffset, bool bIsOutlMv ) +bool SwDoc::MoveParagraph(const SwPaM& rPam, long nOffset, bool const bIsOutlMv) +{ + SwPaM pam(rPam, nullptr); + // sw_redlinehide: as long as a layout with Hide mode exists, only + // move nodes that have merged frames *completely* + SwRootFrame const* pLayout(nullptr); + for (SwRootFrame const* pLay : GetAllLayouts()) + { + if (pLay->IsHideRedlines()) + { + pLayout = pLay; + } + } + if (pLayout) + { + std::pair<SwTextNode *, SwTextNode *> nodes( + sw::GetFirstAndLastNode(*pLayout, rPam.Start()->nNode)); + if (nodes.first && nodes.first != &pam.Start()->nNode.GetNode()) + { + assert(nodes.second); + if (nOffset < 0) + { + nOffset -= pam.Start()->nNode.GetIndex() - nodes.first->GetIndex(); + } + pam.Start()->nNode = *nodes.first; + pam.Start()->nContent.Assign(nodes.first, 0); + } + nodes = sw::GetFirstAndLastNode(*pLayout, rPam.End()->nNode); + if (nodes.first && nodes.second != &pam.End()->nNode.GetNode()) + { + assert(nodes.second); + if (nOffset > 0) + { + nOffset += nodes.second->GetIndex() - pam.End()->nNode.GetIndex(); + } + pam.End()->nNode = *nodes.second; + pam.End()->nContent.Assign(nodes.second, 0); + } + + if (nOffset > 0) + { + // sw_redlinehide: avoid moving into delete redline, skip forward + SwNode const* pNode(GetNodes()[pam.End()->nNode.GetIndex() + nOffset]); + if (pLayout + && pNode->GetRedlineMergeFlag() != SwNode::Merge::None + && pNode->GetRedlineMergeFlag() != SwNode::Merge::First) + { + for ( ; ; ++nOffset) + { + pNode = GetNodes()[pam.End()->nNode.GetIndex() + nOffset]; + if (pNode->IsTextNode()) + { + nodes = GetFirstAndLastNode(*pLayout, *pNode->GetTextNode()); + assert(nodes.first && nodes.second); + nOffset += nodes.second->GetIndex() - pNode->GetIndex(); + // on last; will be incremented below to behind-last + } + } + } + } + else + { + // sw_redlinehide: avoid moving into delete redline, skip backward + SwNode const* pNode(GetNodes()[pam.Start()->nNode.GetIndex() + nOffset]); + if (pLayout + && pNode->GetRedlineMergeFlag() != SwNode::Merge::None + && pNode->GetRedlineMergeFlag() != SwNode::Merge::First) + { + for ( ; ; --nOffset) + { + pNode = GetNodes()[pam.Start()->nNode.GetIndex() + nOffset]; + if (pNode->IsTextNode()) + { + nodes = GetFirstAndLastNode(*pLayout, *pNode->GetTextNode()); + assert(nodes.first && nodes.second); + nOffset -= pNode->GetIndex() - nodes.first->GetIndex(); + // on first + } + } + } + } + } + return MoveParagraphImpl(pam, nOffset, bIsOutlMv, pLayout); +} + +bool SwDoc::MoveParagraphImpl(const SwPaM& rPam, long const nOffset, + bool const bIsOutlMv, SwRootFrame const*const pLayout) { const SwPosition *pStt = rPam.Start(), *pEnd = rPam.End(); @@ -2118,7 +2204,10 @@ bool SwDoc::MoveParagraph( const SwPaM& rPam, long nOffset, bool bIsOutlMv ) pUndo.reset(new SwUndoMoveNum( rPam, nOffset, bIsOutlMv )); nMoved = rPam.End()->nNode.GetIndex() - rPam.Start()->nNode.GetIndex() + 1; } - + (void) pLayout; + assert(!pLayout // check not moving into delete redline + || aIdx.GetNode().GetRedlineMergeFlag() == SwNode::Merge::None + || aIdx.GetNode().GetRedlineMergeFlag() == SwNode::Merge::First); getIDocumentContentOperations().MoveNodeRange( aMvRg, aIdx, SwMoveFlags::REDLINES ); if( pUndo ) diff --git a/sw/source/core/edit/ednumber.cxx b/sw/source/core/edit/ednumber.cxx index cf14f279b2e9..b4f2dc56700c 100644 --- a/sw/source/core/edit/ednumber.cxx +++ b/sw/source/core/edit/ednumber.cxx @@ -484,8 +484,10 @@ bool SwEditShell::MoveNumParas( bool bUpperLower, bool bUpperLeft ) if (pNd->IsSectionNode() || ( pNd->IsEndNode() && pNd->StartOfSectionNode()->IsSectionNode()) || - ( pNd->IsTextNode() && pOrig == static_cast<const SwTextNode*>(pNd)->GetNumRule() && - static_cast<const SwTextNode*>(pNd)->GetActualListLevel() > nUpperLevel )) + (pNd->IsTextNode() + && sw::IsParaPropsNode(*GetLayout(), *static_cast<const SwTextNode*>(pNd)) + && pOrig == static_cast<const SwTextNode*>(pNd)->GetNumRule() + && static_cast<const SwTextNode*>(pNd)->GetActualListLevel() > nUpperLevel)) { ++nIdx; } diff --git a/sw/source/core/inc/txtfrm.hxx b/sw/source/core/inc/txtfrm.hxx index d74f5d4dd2d0..6870d721e5a0 100644 --- a/sw/source/core/inc/txtfrm.hxx +++ b/sw/source/core/inc/txtfrm.hxx @@ -103,6 +103,8 @@ bool FrameContainsNode(SwContentFrame const& rFrame, sal_uLong nNodeIndex); bool IsParaPropsNode(SwRootFrame const& rLayout, SwTextNode const& rNode); SwTextNode * GetParaPropsNode(SwRootFrame const& rLayout, SwNodeIndex const& rNode); SwPosition GetParaPropsPos(SwRootFrame const& rLayout, SwPosition const& rPos); +std::pair<SwTextNode *, SwTextNode *> +GetFirstAndLastNode(SwRootFrame const& rLayout, SwNodeIndex const& rPos); TextFrameIndex UpdateMergedParaForDelete(MergedPara & rMerged, bool isRealDelete, diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx index 24d6b5fdb347..07e7b3cfaac0 100644 --- a/sw/source/core/text/txtfrm.cxx +++ b/sw/source/core/text/txtfrm.cxx @@ -354,6 +354,23 @@ namespace sw { return pos; } + std::pair<SwTextNode *, SwTextNode *> + GetFirstAndLastNode(SwRootFrame const& rLayout, SwNodeIndex const& rPos) + { + SwTextNode *const pTextNode(rPos.GetNode().GetTextNode()); + if (pTextNode && rLayout.IsHideRedlines()) + { + if (SwTextFrame const*const pFrame = static_cast<SwTextFrame*>(pTextNode->getLayoutFrame(&rLayout))) + { + if (sw::MergedPara const*const pMerged = pFrame->GetMergedPara()) + { + return std::make_pair(pMerged->pFirstNode, const_cast<SwTextNode*>(pMerged->pLastNode)); + } + } + } + return std::make_pair(pTextNode, pTextNode); + } + } // namespace sw /// Switches width and height of the text frame commit e08d641d8ed859b366b607804c90c2ee5ca66ebd Author: Michael Stahl <[email protected]> AuthorDate: Tue Oct 30 14:14:55 2018 +0100 Commit: Michael Stahl <[email protected]> CommitDate: Tue Oct 30 14:46:57 2018 +0100 sw_redlinehide_3: adapt setters in SwEditShell too SwEditShell::SetNumRule(), DelNumRules(), NumUpDown() The selection could start in a different node than the props-node but the operation with hidden redlines should apply to the props-node. Change-Id: I307f6497c8fabdf8e12e352c6b9f2c4bf9101720 diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index 8ccee0b48349..c4842f8af649 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -1022,6 +1022,7 @@ public: OUString SetNumRule( const SwPaM&, const SwNumRule&, bool bCreateNewList, + SwRootFrame const* pLayout = nullptr, const OUString& sContinuedListId = OUString(), bool bSetItem = true, const bool bResetIndentAttrs = false ); @@ -1107,12 +1108,12 @@ public: bool NoNum( const SwPaM& ); // Delete, splitting of numbering list. - void DelNumRules( const SwPaM& ); + void DelNumRules(const SwPaM&, SwRootFrame const* pLayout = nullptr); // Invalidates all numrules void InvalidateNumRules(); - bool NumUpDown( const SwPaM&, bool bDown ); + bool NumUpDown(const SwPaM&, bool bDown, SwRootFrame const* pLayout = nullptr); /** Move selected paragraphes (not only numberings) according to offsets. (if negative: go to doc start). */ diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index e52356822ed4..8dcec0a9fd15 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -4662,7 +4662,7 @@ bool DocumentContentOperationsManager::CopyImpl( SwPaM& rPam, SwPosition& rPos, // #i86492# - use <SwDoc::SetNumRule(..)>, because it also handles the <ListId> // Don't reset indent attributes, that would mean loss of direct // formatting. - pDoc->SetNumRule( *pCopyPam, *pNumRuleToPropagate, false, + pDoc->SetNumRule( *pCopyPam, *pNumRuleToPropagate, false, nullptr, aListIdToPropagate, true, /*bResetIndentAttrs=*/false ); } diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx index ff96eb5596e8..c0f52537baa3 100644 --- a/sw/source/core/doc/docnum.cxx +++ b/sw/source/core/doc/docnum.cxx @@ -84,6 +84,24 @@ namespace { pDoc->ResetAttrs( rPam, false, aResetAttrsArray ); } } + + static void ExpandPamForParaPropsNodes(SwPaM& rPam, SwRootFrame const*const pLayout) + { + if (pLayout) + { // ensure that selection from the Shell includes the para-props node + // to which the attributes should be applied + if (rPam.GetPoint()->nNode.GetNode().IsTextNode()) + { + rPam.GetPoint()->nNode = *sw::GetParaPropsNode(*pLayout, rPam.GetPoint()->nNode); + rPam.GetPoint()->nContent.Assign(rPam.GetPoint()->nNode.GetNode().GetContentNode(), 0); + } + if (rPam.GetMark()->nNode.GetNode().IsTextNode()) + { + rPam.GetMark()->nNode = *sw::GetParaPropsNode(*pLayout, rPam.GetMark()->nNode); + rPam.GetMark()->nContent.Assign(rPam.GetMark()->nNode.GetNode().GetContentNode(), 0); + } + } + } } static inline sal_uInt8 GetUpperLvlChg( sal_uInt8 nCurLvl, sal_uInt8 nLevel, sal_uInt16 nMask ) @@ -181,9 +199,11 @@ bool SwDoc::OutlineUpDown(const SwPaM& rPam, short nOffset, return false; // calculate the range + SwPaM aPam(rPam, nullptr); + ExpandPamForParaPropsNodes(aPam, pLayout); const SwOutlineNodes& rOutlNds = GetNodes().GetOutLineNds(); - const SwNodePtr pSttNd = &rPam.Start()->nNode.GetNode(); - const SwNodePtr pEndNd = &rPam.End()->nNode.GetNode(); + const SwNodePtr pSttNd = &aPam.Start()->nNode.GetNode(); + const SwNodePtr pEndNd = &aPam.End()->nNode.GetNode(); SwOutlineNodes::size_type nSttPos, nEndPos; if( !rOutlNds.Seek_Entry( pSttNd, &nSttPos ) && @@ -370,7 +390,7 @@ bool SwDoc::OutlineUpDown(const SwPaM& rPam, short nOffset, { GetIDocumentUndoRedo().StartUndo(SwUndoId::OUTLINE_LR, nullptr); GetIDocumentUndoRedo().AppendUndo( - o3tl::make_unique<SwUndoOutlineLeftRight>( rPam, nOffset ) ); + o3tl::make_unique<SwUndoOutlineLeftRight>(aPam, nOffset) ); } // 2. Apply the new style to all Nodes @@ -830,18 +850,22 @@ static void lcl_ChgNumRule( SwDoc& rDoc, const SwNumRule& rRule ) OUString SwDoc::SetNumRule( const SwPaM& rPam, const SwNumRule& rRule, const bool bCreateNewList, + SwRootFrame const*const pLayout, const OUString& sContinuedListId, bool bSetItem, const bool bResetIndentAttrs ) { OUString sListId; + SwPaM aPam(rPam, nullptr); + ExpandPamForParaPropsNodes(aPam, pLayout); + SwUndoInsNum * pUndo = nullptr; if (GetIDocumentUndoRedo().DoesUndo()) { // Start/End for attributes! GetIDocumentUndoRedo().StartUndo( SwUndoId::INSNUM, nullptr ); - pUndo = new SwUndoInsNum( rPam, rRule ); + pUndo = new SwUndoInsNum( aPam, rRule ); GetIDocumentUndoRedo().AppendUndo(std::unique_ptr<SwUndo>(pUndo)); } @@ -892,16 +916,17 @@ OUString SwDoc::SetNumRule( const SwPaM& rPam, } if (!sListId.isEmpty()) { - getIDocumentContentOperations().InsertPoolItem( rPam, SfxStringItem( RES_PARATR_LIST_ID, sListId ) ); + getIDocumentContentOperations().InsertPoolItem(aPam, SfxStringItem(RES_PARATR_LIST_ID, sListId)); } } - if ( !rPam.HasMark() ) + if (!aPam.HasMark()) { - SwTextNode * pTextNd = rPam.GetPoint()->nNode.GetNode().GetTextNode(); + SwTextNode * pTextNd = aPam.GetPoint()->nNode.GetNode().GetTextNode(); // robust code: consider case that the PaM doesn't denote a text node - e.g. it denotes a graphic node if ( pTextNd != nullptr ) { + assert(!pLayout || sw::IsParaPropsNode(*pLayout, *pTextNd)); SwNumRule * pRule = pTextNd->GetNumRule(); if (pRule && pRule->GetName() == pNewOrChangedNumRule->GetName()) @@ -932,13 +957,13 @@ OUString SwDoc::SetNumRule( const SwPaM& rPam, if ( bSetItem ) { - getIDocumentContentOperations().InsertPoolItem( rPam, SwNumRuleItem( pNewOrChangedNumRule->GetName() ) ); + getIDocumentContentOperations().InsertPoolItem(aPam, SwNumRuleItem(pNewOrChangedNumRule->GetName())); } if ( bResetIndentAttrs && pNewOrChangedNumRule->Get( 0 ).GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT ) { - ::lcl_ResetIndentAttrs(this, rPam, RES_LR_SPACE); + ::lcl_ResetIndentAttrs(this, aPam, RES_LR_SPACE); } if (GetIDocumentUndoRedo().DoesUndo()) @@ -1254,6 +1279,7 @@ void SwDoc::MakeUniqueNumRules(const SwPaM & rPaM) SetNumRule( aPam, *aListStyleData.pReplaceNumRule, aListStyleData.bCreateNewList, + nullptr, aListStyleData.sListId ); if ( aListStyleData.bCreateNewList ) { @@ -1291,19 +1317,17 @@ bool SwDoc::NoNum( const SwPaM& rPam ) return bRet; } -void SwDoc::DelNumRules( const SwPaM& rPam ) +void SwDoc::DelNumRules(const SwPaM& rPam, SwRootFrame const*const pLayout) { - sal_uLong nStt = rPam.GetPoint()->nNode.GetIndex(), - nEnd = rPam.GetMark()->nNode.GetIndex(); - if( nStt > nEnd ) - { - sal_uLong nTmp = nStt; nStt = nEnd; nEnd = nTmp; - } + SwPaM aPam(rPam, nullptr); + ExpandPamForParaPropsNodes(aPam, pLayout); + sal_uLong nStt = aPam.Start()->nNode.GetIndex(); + sal_uLong const nEnd = aPam.End()->nNode.GetIndex(); SwUndoDelNum* pUndo; if (GetIDocumentUndoRedo().DoesUndo()) { - pUndo = new SwUndoDelNum( rPam ); + pUndo = new SwUndoDelNum( aPam ); GetIDocumentUndoRedo().AppendUndo(std::unique_ptr<SwUndo>(pUndo)); } else @@ -1316,6 +1340,10 @@ void SwDoc::DelNumRules( const SwPaM& rPam ) for( ; nStt <= nEnd; ++nStt ) { SwTextNode* pTNd = GetNodes()[ nStt ]->GetTextNode(); + if (pLayout && pTNd) + { + pTNd = sw::GetParaPropsNode(*pLayout, *pTNd); + } SwNumRule* pNumRuleOfTextNode = pTNd ? pTNd->GetNumRule() : nullptr; if ( pTNd && pNumRuleOfTextNode ) { @@ -1651,14 +1679,12 @@ bool SwDoc::GotoPrevNum(SwPosition& rPos, SwRootFrame const*const pLayout, return ::lcl_GotoNextPrevNum(rPos, false, bOverUpper, nullptr, nullptr, pLayout); } -bool SwDoc::NumUpDown( const SwPaM& rPam, bool bDown ) +bool SwDoc::NumUpDown(const SwPaM& rPam, bool bDown, SwRootFrame const*const pLayout) { - sal_uLong nStt = rPam.GetPoint()->nNode.GetIndex(), - nEnd = rPam.GetMark()->nNode.GetIndex(); - if( nStt > nEnd ) - { - sal_uLong nTmp = nStt; nStt = nEnd; nEnd = nTmp; - } + SwPaM aPam(rPam, nullptr); + ExpandPamForParaPropsNodes(aPam, pLayout); + sal_uLong nStt = aPam.Start()->nNode.GetIndex(); + sal_uLong const nEnd = aPam.End()->nNode.GetIndex(); // -> outline nodes are promoted or demoted differently bool bOnlyOutline = true; @@ -1669,6 +1695,10 @@ bool SwDoc::NumUpDown( const SwPaM& rPam, bool bDown ) if (pTextNd) { + if (pLayout) + { + pTextNd = sw::GetParaPropsNode(*pLayout, *pTextNd); + } SwNumRule * pRule = pTextNd->GetNumRule(); if (pRule) @@ -1685,7 +1715,7 @@ bool SwDoc::NumUpDown( const SwPaM& rPam, bool bDown ) sal_Int8 nDiff = bDown ? 1 : -1; if (bOnlyOutline) - bRet = OutlineUpDown(rPam, nDiff); + bRet = OutlineUpDown(rPam, nDiff, pLayout); else if (bOnlyNonOutline) { /* #i24560# @@ -1700,6 +1730,11 @@ bool SwDoc::NumUpDown( const SwPaM& rPam, bool bDown ) // text node. if ( pTNd ) { + if (pLayout) + { + pTNd = sw::GetParaPropsNode(*pLayout, *pTNd); + } + SwNumRule * pRule = pTNd->GetNumRule(); if (pRule) @@ -1717,15 +1752,26 @@ bool SwDoc::NumUpDown( const SwPaM& rPam, bool bDown ) if (GetIDocumentUndoRedo().DoesUndo()) { GetIDocumentUndoRedo().AppendUndo( - o3tl::make_unique<SwUndoNumUpDown>(rPam, nDiff) ); + o3tl::make_unique<SwUndoNumUpDown>(aPam, nDiff) ); } + SwTextNode* pPrev = nullptr; for(sal_uLong nTmp = nStt; nTmp <= nEnd; ++nTmp ) { SwTextNode* pTNd = GetNodes()[ nTmp ]->GetTextNode(); if( pTNd) { + if (pLayout) + { + pTNd = sw::GetParaPropsNode(*pLayout, *pTNd); + if (pTNd == pPrev) + { + continue; + } + pPrev = pTNd; + } + SwNumRule * pRule = pTNd->GetNumRule(); if (pRule) diff --git a/sw/source/core/edit/ednumber.cxx b/sw/source/core/edit/ednumber.cxx index 6597f7109ec6..cf14f279b2e9 100644 --- a/sw/source/core/edit/ednumber.cxx +++ b/sw/source/core/edit/ednumber.cxx @@ -142,6 +142,7 @@ void SwEditShell::NoNum() GetDoc()->GetIDocumentUndoRedo().EndUndo( SwUndoId::END, nullptr ); } else + // sw_redlinehide: leave cursor as is, will be split at Point & apply to new node bRet = GetDoc()->NoNum( *pCursor ); EndAllAction(); @@ -287,12 +288,12 @@ void SwEditShell::DelNumRules() SwPaM aPam( *pCursor->GetPoint() ); for( size_t n = 0; n < aRangeArr.Count(); ++n ) { - GetDoc()->DelNumRules( aRangeArr.SetPam( n, aPam ) ); + GetDoc()->DelNumRules(aRangeArr.SetPam( n, aPam ), GetLayout()); } GetDoc()->GetIDocumentUndoRedo().EndUndo( SwUndoId::END, nullptr ); } else - GetDoc()->DelNumRules( *pCursor ); + GetDoc()->DelNumRules(*pCursor, GetLayout()); // Call AttrChangeNotify on the UI-side. Should actually be redundant but there was a bug once. CallChgLnk(); @@ -312,14 +313,14 @@ void SwEditShell::NumUpDown( bool bDown ) bool bRet = true; SwPaM* pCursor = GetCursor(); if( !pCursor->IsMultiSelection() ) - bRet = GetDoc()->NumUpDown( *pCursor, bDown ); + bRet = GetDoc()->NumUpDown(*pCursor, bDown, GetLayout()); else { GetDoc()->GetIDocumentUndoRedo().StartUndo( SwUndoId::START, nullptr ); SwPamRanges aRangeArr( *pCursor ); SwPaM aPam( *pCursor->GetPoint() ); for( size_t n = 0; n < aRangeArr.Count(); ++n ) - bRet = bRet && GetDoc()->NumUpDown( aRangeArr.SetPam( n, aPam ), bDown ); + bRet = bRet && GetDoc()->NumUpDown(aRangeArr.SetPam( n, aPam ), bDown, GetLayout()); GetDoc()->GetIDocumentUndoRedo().EndUndo( SwUndoId::END, nullptr ); } GetDoc()->getIDocumentState().SetModified(); @@ -387,7 +388,7 @@ void SwEditShell::SetIndent(short nIndent, const SwPosition & rPos) // change numbering rule - changed numbering rule is not applied at <aPaM> SwPaM aPaM(pos); - GetDoc()->SetNumRule( aPaM, aRule, false, OUString(), false ); + GetDoc()->SetNumRule(aPaM, aRule, false, GetLayout(), OUString(), false); } EndAllAction(); @@ -513,7 +514,7 @@ bool SwEditShell::MoveNumParas( bool bUpperLower, bool bUpperLeft ) else if( (bUpperLeft ? nUpperLevel : nLowerLevel+1) < MAXLEVEL ) { aCursor.Move( fnMoveBackward, GoInNode ); - bRet = GetDoc()->NumUpDown( aCursor, !bUpperLeft ); + bRet = GetDoc()->NumUpDown(aCursor, !bUpperLeft, GetLayout()); } } @@ -758,7 +759,7 @@ void SwEditShell::SetCurNumRule( const SwNumRule& rRule, { aRangeArr.SetPam( n, aPam ); OUString sListId = GetDoc()->SetNumRule( aPam, rRule, - bCreateNewList, sContinuedListId, + bCreateNewList, GetLayout(), sContinuedListId, true, bResetIndentAttrs ); //tdf#87548 On creating a new list for a multi-selection only @@ -775,7 +776,7 @@ void SwEditShell::SetCurNumRule( const SwNumRule& rRule, else { GetDoc()->SetNumRule( *pCursor, rRule, - bCreateNewList, rContinuedListId, + bCreateNewList, GetLayout(), rContinuedListId, true, bResetIndentAttrs ); GetDoc()->SetCounted( *pCursor, true ); } commit 90807607ffb6fa06b20a2034c1890eaaf8342117 Author: Michael Stahl <[email protected]> AuthorDate: Tue Oct 30 11:11:02 2018 +0100 Commit: Michael Stahl <[email protected]> CommitDate: Tue Oct 30 11:11:02 2018 +0100 sw_redlinehide_3: adapt SwEditShell::GetPaMAttr/GetPaMTextFormatColl These are Num-relevant. Change-Id: Ic07dc2574590713357aec484051f52bfe792eabb diff --git a/sw/source/core/edit/edattr.cxx b/sw/source/core/edit/edattr.cxx index afe1b0baffb2..579150a64000 100644 --- a/sw/source/core/edit/edattr.cxx +++ b/sw/source/core/edit/edattr.cxx @@ -79,7 +79,8 @@ bool SwEditShell::GetPaMAttr( SwPaM* pPaM, SfxItemSet& rSet, // the attributes to get are those from the numbering format. if (rCurrentPaM.IsInFrontOfLabel()) { - SwTextNode * pTextNd = rCurrentPaM.GetPoint()->nNode.GetNode().GetTextNode(); + SwTextNode const*const pTextNd = sw::GetParaPropsNode(*GetLayout(), + rCurrentPaM.GetPoint()->nNode); if (pTextNd) { @@ -268,8 +269,9 @@ SwTextFormatColl* SwEditShell::GetPaMTextFormatColl( SwPaM* pPaM ) const if( pNd->IsTextNode() ) { + SwTextNode *const pTextNode(sw::GetParaPropsNode(*GetLayout(), SwNodeIndex(*pNd))); // if it's a text node get its named paragraph format - SwTextFormatColl* pFormat = pNd->GetTextNode()->GetTextColl(); + SwTextFormatColl *const pFormat = pTextNode->GetTextColl(); // if the paragraph format exist stop here and return it if( pFormat != nullptr ) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
