summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2021-03-22 12:28:36 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2021-04-08 09:32:13 +0200
commit722b7a18c04aa69bfa10aaac8d47648912af94db (patch)
tree4a8c5664d73af677793707829c284d5531cd3b53
parent4bfe04aec4dddf8e612160ceda87ef9f5ea4bb42 (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.cxx11
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);
}
}