From 95eb7561d7dbbfcb36460115712992172b93c13b Mon Sep 17 00:00:00 2001 From: Pranam Lashkari Date: Tue, 26 May 2020 10:17:40 +0530 Subject: LOK: slide sorter: update the model on selecting multiple slides Change-Id: I17bdd8e39c960a81d4bef2a8cffd42103adb5341 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94713 Tested-by: Jenkins CollaboraOffice Reviewed-by: Andras Timar --- sd/source/ui/view/drviews1.cxx | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/sd/source/ui/view/drviews1.cxx b/sd/source/ui/view/drviews1.cxx index cf8f73d21819..d853f8edb4ac 100644 --- a/sd/source/ui/view/drviews1.cxx +++ b/sd/source/ui/view/drviews1.cxx @@ -776,15 +776,36 @@ bool DrawViewShell::ActivateObject(SdrOle2Obj* pObj, long nVerb) bool DrawViewShell::SelectPage(sal_uInt16 nPage, sal_uInt16 nSelect) { SdPage* pPage = GetDoc()->GetSdPage(nPage, PageKind::Standard); + + //page selector marks pages to selected in view + auto &pageSelector = sd::slidesorter::SlideSorterViewShell::GetSlideSorter(GetViewShellBase())->GetSlideSorter().GetController().GetPageSelector(); + if (pPage) { if (nSelect == 0) - pPage->SetSelected(false); // Deselect. + { + GetDoc()->SetSelected(pPage, false); // Deselect. + pageSelector.DeselectPage(nPage); + } else if (nSelect == 1) - pPage->SetSelected(true); // Select. + { + GetDoc()->SetSelected(pPage, true); // Select. + pageSelector.SelectPage(nPage); + } else - pPage->SetSelected(!pPage->IsSelected()); // Toggle. - + { + // Toggle. + if (pPage->IsSelected()) + { + GetDoc()->SetSelected(pPage, false); + pageSelector.DeselectPage(nPage); + } + else + { + GetDoc()->SetSelected(pPage, true); + pageSelector.SelectPage(nPage); + } + } return true; } -- cgit