sd/source/ui/view/drviews4.cxx |   27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

New commits:
commit 6f43db55ab72a3a538bf9ca0aeecb31fc1abbee1
Author:     Pranam Lashkari <[email protected]>
AuthorDate: Tue May 26 10:20:07 2020 +0530
Commit:     Andras Timar <[email protected]>
CommitDate: Wed Jun 10 12:31:13 2020 +0200

    LOK: Allow deleting multiple slides from slidesorter
    
    Change-Id: Ie371e7eb5a96655fd281b4137243aa8628b6283b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94714
    Tested-by: Jenkins CollaboraOffice <[email protected]>
    Reviewed-by: Andras Timar <[email protected]>

diff --git a/sd/source/ui/view/drviews4.cxx b/sd/source/ui/view/drviews4.cxx
index 70d49670ea7d..20ec54212c5a 100644
--- a/sd/source/ui/view/drviews4.cxx
+++ b/sd/source/ui/view/drviews4.cxx
@@ -73,16 +73,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_QUERY_THROW );
-        Reference< XDrawPage > xPage( xPages->getByIndex( nPage ), 
UNO_QUERY_THROW );
-        xPages->remove( xPage );
+        Reference<XDrawPages> xPages( xDrawPagesSupplier->getDrawPages(), 
UNO_SET_THROW );
+        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& )
     {
_______________________________________________
Libreoffice-commits mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to