diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-01-29 11:38:48 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2021-01-30 11:36:50 +0100 |
commit | 6792aa49a5a7eba601693734a164ab45042c580b (patch) | |
tree | 41f88b660d477168b708a327151863648bd31c6a /sw/source/uibase | |
parent | c42f60e2b9a521005e1263e781c878e2598b44df (diff) |
don't scroll to cursor during GetSurroundingText
lock against scrolling to cursor if the IM requests the surrounding
text around the cursor
seen on launching a menu from a sidebar comment's menubutton in writer
if the cursor is a scroll-off page position in the main document
Change-Id: I325004987f576df65188629bf6fb63e0ed0be9bd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110153
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sw/source/uibase')
-rw-r--r-- | sw/source/uibase/docvw/edtwin.cxx | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 143a3259a991..cfef52b581d4 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -6461,6 +6461,9 @@ OUString SwEditWin::GetSurroundingText() const rSh.GetSelectedText( sReturn, ParaBreakType::ToOnlyCR ); else if( !rSh.HasSelection() ) { + bool bUnLockView = !rSh.IsViewLocked(); + rSh.LockView(true); + SwPosition *pPos = rSh.GetCursor()->GetPoint(); const sal_Int32 nPos = pPos->nContent.GetIndex(); @@ -6474,6 +6477,9 @@ OUString SwEditWin::GetSurroundingText() const pPos->nContent = nPos; rSh.ClearMark(); rSh.HideCursor(); + + if (bUnLockView) + rSh.LockView(false); } return sReturn; @@ -6490,6 +6496,9 @@ Selection SwEditWin::GetSurroundingTextSelection() const } else { + bool bUnLockView = !rSh.IsViewLocked(); + rSh.LockView(true); + // Return the position of the visible cursor in the sentence // around the visible cursor. SwPosition *pPos = rSh.GetCursor()->GetPoint(); @@ -6503,6 +6512,9 @@ Selection SwEditWin::GetSurroundingTextSelection() const rSh.ClearMark(); rSh.ShowCursor(); + if (bUnLockView) + rSh.LockView(false); + return Selection( nPos - nStartPos, nPos - nStartPos ); } } |