summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPranam Lashkari <lpranam@collabora.com>2020-05-26 10:20:07 +0530
committerPranam Lashkari <lpranam@collabora.com>2020-06-25 08:10:33 +0200
commit4acb7b9249206aadaf4617a2abf3ac6d57d62079 (patch)
tree9471075fbdfe55ec3176b344681704804b294fc7
parentebdb73c17d884c463c3c1279678a36c2668fd8c2 (diff)
LOK: Allow deleting multiple slides from slidesorter
Change-Id: Ie371e7eb5a96655fd281b4137243aa8628b6283b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94816 Tested-by: Jenkins Reviewed-by: Pranam Lashkari <lpranam@collabora.com>
-rw-r--r--sd/source/ui/view/drviews4.cxx25
1 files changed, 21 insertions, 4 deletions
diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx
index 9839d3d799e5..5cd99a497143 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -72,16 +72,33 @@ using namespace ::com::sun::star::drawing;
void DrawViewShell::DeleteActualPage()
{
- sal_uInt16 nPage = maTabControl->GetCurPagePos();
-
mpDrawView->SdrEndTextEdit();
try
{
Reference<XDrawPagesSupplier> xDrawPagesSupplier( GetDoc()->getUnoModel(), UNO_QUERY_THROW );
Reference<XDrawPages> xPages( xDrawPagesSupplier->getDrawPages(), UNO_SET_THROW );
- Reference< XDrawPage > xPage( xPages->getByIndex( nPage ), UNO_QUERY_THROW );
- xPages->remove( xPage );
+ sal_uInt16 nPageCount = GetDoc()->GetSdPageCount(mePageKind);
+ SdPage* pPage = nullptr;
+ std::vector<Reference<XDrawPage>> pagesToDelete;
+
+ GetView()->BegUndo(SdResId(STR_UNDO_DELETEPAGES));
+
+ for (sal_uInt16 i = 0; i < nPageCount; i++)
+ {
+ pPage = GetDoc()->GetSdPage(i, mePageKind);
+ if(pPage->IsSelected())
+ {
+ Reference< XDrawPage > xPage( xPages->getByIndex( maTabControl->GetPagePos(pPage->getPageId()) ), UNO_QUERY_THROW );
+ pagesToDelete.push_back(xPage);
+ }
+ }
+ for (auto &xPage: pagesToDelete)
+ {
+ xPages->remove(xPage);
+ }
+
+ GetView()->EndUndo();
}
catch( Exception& )
{