diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2021-03-22 12:28:36 +0100 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2021-04-08 09:32:13 +0200 |
commit | 722b7a18c04aa69bfa10aaac8d47648912af94db (patch) | |
tree | 4a8c5664d73af677793707829c284d5531cd3b53 | |
parent | 4bfe04aec4dddf8e612160ceda87ef9f5ea4bb42 (diff) |
impress: delete correct page when has multiple users
When multiple users are editing the presentation
few pages could be selected. Then the first selected
page was removed instead of currently selected by user
who executed the delete action. SlideSorterViewShell
has better knowledge about selected slides by current view.
Change-Id: Icb3157c8426027a7edc225249f8dd99270e9b2da
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112883
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113728
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r-- | sd/source/ui/view/drviews4.cxx | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx index 2fd177135ecf..c3557b4980d8 100644 --- a/sd/source/ui/view/drviews4.cxx +++ b/sd/source/ui/view/drviews4.cxx @@ -59,6 +59,7 @@ #include <svx/bmpmask.hxx> #include <LayerTabBar.hxx> +#include <SlideSorterViewShell.hxx> #include <svx/svditer.hxx> #include <navigatr.hxx> @@ -88,9 +89,15 @@ void DrawViewShell::DeleteActualPage() for (sal_uInt16 i = 0; i < nPageCount; i++) { pPage = GetDoc()->GetSdPage(i, mePageKind); - if(pPage->IsSelected()) + sal_uInt16 nPageIndex = maTabControl->GetPagePos(pPage->getPageId()); + + slidesorter::SlideSorterViewShell* pVShell + = slidesorter::SlideSorterViewShell::GetSlideSorter(GetViewShellBase()); + bool bUseSlideSorter = pVShell != nullptr; + + if((bUseSlideSorter && IsSelected(nPageIndex)) || (!bUseSlideSorter && pPage->IsSelected())) { - Reference< XDrawPage > xPage( xPages->getByIndex( maTabControl->GetPagePos(pPage->getPageId()) ), UNO_QUERY_THROW ); + Reference< XDrawPage > xPage( xPages->getByIndex( nPageIndex ), UNO_QUERY_THROW ); pagesToDelete.push_back(xPage); } } |