[Libreoffice-commits] core.git: sw/source
Jim Raykowski (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jan 20 02:12:17 UTC 2021
sw/source/uibase/uiview/viewmdi.cxx | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
New commits:
commit eb06eea67bb8955b0d71762bcf94eebf7adb7419
Author: Jim Raykowski <raykowj at gmail.com>
AuthorDate: Sun Dec 27 12:26:20 2020 -0900
Commit: Jim Raykowski <raykowj at gmail.com>
CommitDate: Wed Jan 20 03:11:41 2021 +0100
Don't move to postit if not visible
Rework navigation move handler postit move to do correct wrap movement
when positits at the begining and ending of the document are not
visible.
Change-Id: Ie246462d23c8f1e2e06929933f4d71197c2bde83
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108390
Tested-by: Jenkins
Reviewed-by: Jim Raykowski <raykowj at gmail.com>
diff --git a/sw/source/uibase/uiview/viewmdi.cxx b/sw/source/uibase/uiview/viewmdi.cxx
index 541a0ba210c3..69bd97623606 100644
--- a/sw/source/uibase/uiview/viewmdi.cxx
+++ b/sw/source/uibase/uiview/viewmdi.cxx
@@ -502,25 +502,43 @@ IMPL_LINK( SwView, MoveNavigationHdl, void*, p, void )
case NID_POSTIT:
{
- if ( m_pPostItMgr->HasNotes() )
+ if (m_pPostItMgr->HasNotes())
{
rSh.EnterStdMode();
- sw::annotation::SwAnnotationWin* pPostIt = GetPostItMgr()->GetActiveSidebarWin();
+ sw::annotation::SwAnnotationWin* pPostIt = m_pPostItMgr->GetActiveSidebarWin();
if (pPostIt)
- GetPostItMgr()->SetActiveSidebarWin(nullptr);
+ m_pPostItMgr->SetActiveSidebarWin(nullptr);
SwFieldType* pFieldType = rSh.GetFieldType(0, SwFieldIds::Postit);
- if ( !rSh.MoveFieldType( pFieldType, bNext ) )
+ rSh.StartAction();
+ if (!rSh.MoveFieldType(pFieldType, bNext))
{
- bNext ? (*(m_pPostItMgr->begin()))->mpPostIt->GotoPos() :
- (*(m_pPostItMgr->end()-1))->mpPostIt->GotoPos();
- SvxSearchDialogWrapper::SetSearchLabel( bNext ? SearchLabel::EndWrapped : SearchLabel::StartWrapped );
+ // no postits found in the move direction
+ // wrap and try again
+ SwShellCursor* pCursor = rSh.GetCursor_();
+ SwCursorSaveState aSaveState(*pCursor);
+ rSh.SttEndDoc(bNext);
+ if (rSh.MoveFieldType(pFieldType, bNext))
+ {
+ GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
+ SvxSearchDialogWrapper::SetSearchLabel(bNext ? SearchLabel::EndWrapped :
+ SearchLabel::StartWrapped);
+ }
+ else
+ {
+ // no visible postits
+ pCursor->RestoreSavePos();
+ SvxSearchDialogWrapper::SetSearchLabel(SearchLabel::NavElementNotFound);
+ }
}
else
+ {
+ GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
SvxSearchDialogWrapper::SetSearchLabel( SearchLabel::Empty );
- GetViewFrame()->GetDispatcher()->Execute(FN_POSTIT);
+ }
+ rSh.EndAction();
}
else
- SvxSearchDialogWrapper::SetSearchLabel( SearchLabel::NavElementNotFound );
+ SvxSearchDialogWrapper::SetSearchLabel(SearchLabel::NavElementNotFound);
}
break;
More information about the Libreoffice-commits
mailing list