sw/source/core/undo/docundo.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
New commits: commit ea030aeffd839f1078c137cb19cb1694d0581d42 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Thu Jun 22 16:46:22 2023 +0200 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Wed Jul 5 13:05:38 2023 +0200 lok: use correct shell when doing undo When doing undo we save EditShell reference in the context object. Later it is used to get cursor we want to move to the place where modification was done (in sw/source/core/undo/unins.cxx:281). In LOK case when 2 different sessions were used and undo was done by user A - then user's B cursor was moved. This fixes that issue. We use current shell instead of getting it indirectly through SwDoc::GetEditShell() Change-Id: I7a10ea98587f48818e8d0aaa9ad739d4eed514f5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153461 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Michael Meeks <michael.me...@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153986 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/sw/source/core/undo/docundo.cxx b/sw/source/core/undo/docundo.cxx index a9efc248259a..57202fe3632a 100644 --- a/sw/source/core/undo/docundo.cxx +++ b/sw/source/core/undo/docundo.cxx @@ -30,6 +30,7 @@ #include <pam.hxx> #include <swundo.hxx> #include <UndoCore.hxx> +#include <wrtsh.hxx> #include <editsh.hxx> #include <unobaseclass.hxx> #include <IDocumentDrawModelAccess.hxx> @@ -666,7 +667,10 @@ bool UndoManager::impl_DoUndoRedo(UndoOrRedoType undoOrRedo, size_t nUndoOffset) UnoActionContext c(& rDoc); // exception-safe StartAllAction/EndAllAction - SwEditShell *const pEditShell(rDoc.GetEditShell()); + SwView* pViewShell = dynamic_cast<SwView*>(SfxViewShell::Current()); + SwEditShell *const pEditShell( + comphelper::LibreOfficeKit::isActive() && pViewShell ? pViewShell->GetWrtShellPtr() + : rDoc.GetEditShell()); OSL_ENSURE(pEditShell, "sw::UndoManager needs a SwEditShell!"); if (!pEditShell) {