summaryrefslogtreecommitdiff
path: root/sw/source/uibase/docvw/edtwin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/uibase/docvw/edtwin.cxx')
-rw-r--r--sw/source/uibase/docvw/edtwin.cxx33
1 files changed, 23 insertions, 10 deletions
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx
index fe41345faf5e..7a5d7117b4cf 100644
--- a/sw/source/uibase/docvw/edtwin.cxx
+++ b/sw/source/uibase/docvw/edtwin.cxx
@@ -6247,16 +6247,29 @@ void SwEditWin::SetCursorTwipPosition(const Point& rPosition, bool bPoint, bool
// Not an SwWrtShell, as that would make SwCrsrShell::GetCrsr() inaccessible.
SwEditShell& rShell = m_rView.GetWrtShell();
- SwMvContext aMvContext(&rShell);
- if (bClearMark)
- rShell.ClearMark();
- // If the mark is to be updated, then exchange the point and mark before
- // and after, as we can't easily set the mark.
- if (!bPoint)
- rShell.getShellCrsr(/*bBlock=*/false)->Exchange();
- rShell.SetCrsr(rPosition);
- if (!bPoint)
- rShell.getShellCrsr(/*bBlock=*/false)->Exchange();
+
+ bool bCreateSelection = false;
+ {
+ SwMvContext aMvContext(&rShell);
+ if (bClearMark)
+ rShell.ClearMark();
+ else
+ bCreateSelection = !rShell.HasMark();
+
+ if (bCreateSelection)
+ m_rView.GetWrtShell().SttSelect();
+
+ // If the mark is to be updated, then exchange the point and mark before
+ // and after, as we can't easily set the mark.
+ if (!bPoint)
+ rShell.getShellCrsr(/*bBlock=*/false)->Exchange();
+ rShell.SetCrsr(rPosition);
+ if (!bPoint)
+ rShell.getShellCrsr(/*bBlock=*/false)->Exchange();
+ }
+
+ if (bCreateSelection)
+ m_rView.GetWrtShell().EndSelect();
}
void SwEditWin::SetGraphicTwipPosition(bool bStart, const Point& rPosition)