editeng/source/editeng/editview.cxx | 7 ++++++- sw/inc/AnnotationWin.hxx | 1 + sw/source/uibase/docvw/AnnotationWin2.cxx | 17 ++++++++++++----- sw/source/uibase/docvw/SidebarTxtControl.cxx | 2 ++ 4 files changed, 21 insertions(+), 6 deletions(-)
New commits: commit 4bb59cd1f45133994d3d13642367470f528094f4 Author: Bayram Çiçek <[email protected]> AuthorDate: Thu Jul 8 12:56:23 2021 +0300 Commit: Muhammet Kara <[email protected]> CommitDate: Fri Aug 20 11:13:21 2021 +0200 tdf#91519: prevent jump to top of the comment view In Writer, there are 3 issues about comment section: - comment section scrolls to top of its view when clicking inside a comment view. - clicking inside a comment view, scrolls the view to old cursor location automatically (if old cursor out of the visible area) - comment section scrolls automatically to the old *selected* text (if it's out of visible area) when clicking inside the Writer canvas view this commit is intended to solve these issues Change-Id: If7d62373f5215adea85512b66b78736e04e02c3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118638 Tested-by: Jenkins Reviewed-by: Muhammet Kara <[email protected]> diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx index 512a3bf54915..1d4ebfae186c 100644 --- a/editeng/source/editeng/editview.cxx +++ b/editeng/source/editeng/editview.cxx @@ -282,7 +282,12 @@ void EditView::SetSelection( const ESelection& rESel ) pImpEditView->SetEditSelection( aNewSelection ); pImpEditView->DrawSelectionXOR(); bool bGotoCursor = pImpEditView->DoAutoScroll(); - ShowCursor( bGotoCursor ); + + // comments section in Writer: + // don't scroll to the selection if it is + // out of visible area of comment canvas. + if (HasSelection()) + ShowCursor( bGotoCursor ); } ESelection EditView::GetSelection() const diff --git a/sw/inc/AnnotationWin.hxx b/sw/inc/AnnotationWin.hxx index 53ae31f83b10..24c3c5792976 100644 --- a/sw/inc/AnnotationWin.hxx +++ b/sw/inc/AnnotationWin.hxx @@ -122,6 +122,7 @@ class SAL_DLLPUBLIC_RTTI SwAnnotationWin final : public InterimItemWindow void DoResize(); void ResizeIfNecessary(tools::Long aOldHeight, tools::Long aNewHeight); void SetScrollbar(); + void LockView(bool bLock); void SetVirtualPosSize( const Point& aPoint, const Size& aSize); Point VirtualPos() { return mPosSize.TopLeft(); } diff --git a/sw/source/uibase/docvw/AnnotationWin2.cxx b/sw/source/uibase/docvw/AnnotationWin2.cxx index 12988e4d3343..19f663f9895c 100644 --- a/sw/source/uibase/docvw/AnnotationWin2.cxx +++ b/sw/source/uibase/docvw/AnnotationWin2.cxx @@ -994,7 +994,10 @@ void SwAnnotationWin::ActivatePostIt() CheckMetaText(); SetViewState(ViewState::EDIT); - GetOutlinerView()->ShowCursor(); + + // prevent autoscroll to the old cursor location + // when cursor out of visible area + GetOutlinerView()->ShowCursor(false); mpOutlinerView->GetEditView().SetInsertMode(mrView.GetWrtShellPtr()->IsInsMode()); @@ -1168,10 +1171,10 @@ bool SwAnnotationWin::SetActiveSidebarWin() { if (mrMgr.GetActiveSidebarWin() == this) return false; - const bool bLockView = mrView.GetWrtShell().IsViewLocked(); mrView.GetWrtShell().LockView( true ); mrMgr.SetActiveSidebarWin(this); - mrView.GetWrtShell().LockView( bLockView ); + mrView.GetWrtShell().LockView( true ); + return true; } @@ -1179,10 +1182,14 @@ void SwAnnotationWin::UnsetActiveSidebarWin() { if (mrMgr.GetActiveSidebarWin() != this) return; - const bool bLockView = mrView.GetWrtShell().IsViewLocked(); mrView.GetWrtShell().LockView( true ); mrMgr.SetActiveSidebarWin(nullptr); - mrView.GetWrtShell().LockView( bLockView ); + mrView.GetWrtShell().LockView( false ); +} + +void SwAnnotationWin::LockView(bool bLock) +{ + mrView.GetWrtShell().LockView( bLock ); } IMPL_LINK(SwAnnotationWin, ScrollHdl, weld::ScrolledWindow&, rScrolledWindow, void) diff --git a/sw/source/uibase/docvw/SidebarTxtControl.cxx b/sw/source/uibase/docvw/SidebarTxtControl.cxx index b9dde38dc1a7..ba544b7c88dd 100644 --- a/sw/source/uibase/docvw/SidebarTxtControl.cxx +++ b/sw/source/uibase/docvw/SidebarTxtControl.cxx @@ -147,6 +147,8 @@ void SidebarTextControl::LoseFocus() { Invalidate(); } + // set false for autoscroll to typing location + mrSidebarWin.LockView(false); } OUString SidebarTextControl::RequestHelp(tools::Rectangle& rHelpRect)
