sw/source/core/crsr/crstrvl.cxx | 4 ++++ sw/source/uibase/uiview/view2.cxx | 25 ------------------------- 2 files changed, 4 insertions(+), 25 deletions(-)
New commits: commit 644aacd1e4b419f2f85b6c2e18026ca04206b378 Author: Michael Stahl <mst...@redhat.com> Date: Wed Apr 5 16:54:57 2017 +0200 rhbz#1438179 sw: fix toolbar "Next Track Change" / "Previous..." There's some confusing workarounds in SwView::Execute() that aren't needed if the SwCursorShell just calls NormalizePam() so it always makes progress. Change-Id: I3b014079b19925041234fcd858526148890f560c (cherry picked from commit 25eb0899227830cca7f28006376962d84f8e9c7a) Reviewed-on: https://gerrit.libreoffice.org/36166 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx index 6099b32aec51..c024e0eb7d69 100644 --- a/sw/source/core/crsr/crstrvl.cxx +++ b/sw/source/core/crsr/crstrvl.cxx @@ -1982,6 +1982,8 @@ const SwRangeRedline* SwCursorShell::SelNextRedline() SwCallLink aLk( *this ); // watch Cursor-Moves SwCursorSaveState aSaveState( *m_pCurrentCursor ); + // ensure point is at the end so alternating SelNext/SelPrev works + NormalizePam(false); pFnd = GetDoc()->getIDocumentRedlineAccess().SelNextRedline( *m_pCurrentCursor ); if( pFnd && !m_pCurrentCursor->IsInProtectTable() && !m_pCurrentCursor->IsSelOvr() ) UpdateCursor( SwCursorShell::SCROLLWIN|SwCursorShell::CHKRANGE|SwCursorShell::READONLY); @@ -2000,6 +2002,8 @@ const SwRangeRedline* SwCursorShell::SelPrevRedline() SwCallLink aLk( *this ); // watch Cursor-Moves SwCursorSaveState aSaveState( *m_pCurrentCursor ); + // ensure point is at the start so alternating SelNext/SelPrev works + NormalizePam(true); pFnd = GetDoc()->getIDocumentRedlineAccess().SelPrevRedline( *m_pCurrentCursor ); if( pFnd && !m_pCurrentCursor->IsInProtectTable() && !m_pCurrentCursor->IsSelOvr() ) UpdateCursor( SwCursorShell::SCROLLWIN|SwCursorShell::CHKRANGE|SwCursorShell::READONLY); diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx index 8865d294597a..7b639f6628d8 100644 --- a/sw/source/uibase/uiview/view2.cxx +++ b/sw/source/uibase/uiview/view2.cxx @@ -714,7 +714,6 @@ void SwView::Execute(SfxRequest &rReq) if (pArgs && pArgs->GetItemState(nSlot, false, &pItem) == SfxItemState::SET) nRedline = static_cast<const SfxUInt16Item*>(pItem)->GetValue(); - const SwRangeRedline *pCurrent = m_pWrtShell->GetCurrRedline(); SwDoc* pDoc = m_pWrtShell->GetDoc(); const SwRedlineTable& rTable = pDoc->getIDocumentRedlineAccess().GetRedlineTable(); const SwRangeRedline *pNext = nullptr; @@ -723,15 +722,6 @@ void SwView::Execute(SfxRequest &rReq) else pNext = m_pWrtShell->SelNextRedline(); - // FN_REDLINE_PREV_CHANGE leaves the selection point at the start of the redline. - // In such cases, SelNextRedline (which starts searching from the selection point) - // immediately finds the current redline and advances the selection point to its end. - - // This behavior means that PREV_CHANGE followed by NEXT_CHANGE would not change - // the current redline, so we detect it and select the next redline again. - if (pCurrent && pCurrent == pNext && nRedline == USHRT_MAX) - pNext = m_pWrtShell->SelNextRedline(); - if (pNext) m_pWrtShell->SetInSelect(); } @@ -739,24 +729,9 @@ void SwView::Execute(SfxRequest &rReq) case FN_REDLINE_PREV_CHANGE: { - const SwPaM *pCursor = m_pWrtShell->GetCursor(); - const SwPosition initialCursorStart = *pCursor->Start(); const SwRangeRedline *pPrev = m_pWrtShell->SelPrevRedline(); if (pPrev) - { - // FN_REDLINE_NEXT_CHANGE leaves the selection point at the end of the redline. - // In such cases, SelPrevRedline (which starts searching from the selection point) - // immediately finds the current redline and advances the selection point to its - // start. - - // This behavior means that NEXT_CHANGE followed by PREV_CHANGE would not change - // the current redline, so we detect it and move to the previous redline again. - if (initialCursorStart == *pPrev->Start()) - pPrev = m_pWrtShell->SelPrevRedline(); - } - - if (pPrev) m_pWrtShell->SetInSelect(); } break; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits