sd/inc/drawdoc.hxx | 6 +-- sd/source/core/drawdoc2.cxx | 61 +++++++++++++++++++++++-------- sd/source/ui/sidebar/SlideBackground.cxx | 1 3 files changed, 51 insertions(+), 17 deletions(-)
New commits: commit db9d2546a4cc4efbc57d664d2eb62478caf161b6 Author: Mohit Marathe <[email protected]> AuthorDate: Wed Nov 5 17:18:20 2025 +0530 Commit: Michael Stahl <[email protected]> CommitDate: Mon Jan 12 14:00:26 2026 +0100 sd: update Format combobox on switching to a different sized page Signed-off-by: Mohit Marathe <[email protected]> Change-Id: I930d2e1d26609b31dcc32ca6630e89b24bbcaa18 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193458 Reviewed-by: Michael Stahl <[email protected]> Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196695 diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx index e98e546ff847..3a15e0f178f5 100644 --- a/sd/source/ui/sidebar/SlideBackground.cxx +++ b/sd/source/ui/sidebar/SlideBackground.cxx @@ -697,6 +697,7 @@ void SlideBackground::updatePaperSizeBoxSelection() Paper ePaper = SvxPaperInfo::GetSvxPaper(pPage->GetSize(), MapUnit::Map100thMM); mxPaperSizeBox->set_active_id(ePaper); } + GetBindings()->Invalidate(SID_ATTR_PAGE_SIZE); } SlideBackground::~SlideBackground() commit 32500246a5a6a6ad3e1b1aab6093759c1e576b88 Author: Mohit Marathe <[email protected]> AuthorDate: Tue Oct 21 10:48:17 2025 +0530 Commit: Michael Stahl <[email protected]> CommitDate: Mon Jan 12 14:00:18 2026 +0100 sd: insert or remove the page preview from canvas page when the corresponding page has been inserted or removed Signed-off-by: Mohit Marathe <[email protected]> Change-Id: I4f9309a77a960814a85f8a015e3719ee7a0623b4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/192768 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Michael Stahl <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196694 diff --git a/sd/inc/drawdoc.hxx b/sd/inc/drawdoc.hxx index fdb41267ab66..bb485147e9fb 100644 --- a/sd/inc/drawdoc.hxx +++ b/sd/inc/drawdoc.hxx @@ -1001,6 +1001,8 @@ public: bool bIsPageObj, const sal_Int32 nInsertPosition); + SAL_DLLPRIVATE bool HasCanvasPage() const { return mpCanvasPage != nullptr; } + SAL_DLLPRIVATE sal_uInt16 GetOrInsertCanvasPage (); /** return the document fonts for latin, cjk and ctl according to the current @@ -1139,10 +1141,8 @@ private: bool bIsPageBack, bool bIsPageObj); - SAL_DLLPRIVATE bool hasCanvasPage() const { return mpCanvasPage != nullptr; } - SAL_DLLPRIVATE void populatePagePreviewsGrid(); - SAL_DLLPRIVATE void updateCanvasPreviewsGrid(); + SAL_DLLPRIVATE void updatePagePreviewsGrid(SdPage* pPage); SAL_DLLPRIVATE virtual void PageListChanged() override; SAL_DLLPRIVATE virtual void MasterPageListChanged() override; diff --git a/sd/source/core/drawdoc2.cxx b/sd/source/core/drawdoc2.cxx index 19ae5cf93bcd..03f1ceab22f6 100644 --- a/sd/source/core/drawdoc2.cxx +++ b/sd/source/core/drawdoc2.cxx @@ -445,21 +445,22 @@ void SdDrawDocument::InsertPage(SdrPage* pPage, sal_uInt16 nPos) FmFormModel::InsertPage(pPage, nPos); - static_cast<SdPage*>(pPage)->ConnectLink(); + SdPage* pSdPage = static_cast<SdPage*>(pPage); + pSdPage->ConnectLink(); UpdatePageObjectsInNotes(nPos); if (!bLast) - UpdatePageRelativeURLs(static_cast<SdPage*>( pPage ), nPos, 1); + UpdatePageRelativeURLs(pSdPage, nPos, 1); - if (comphelper::LibreOfficeKit::isActive() && static_cast<SdPage*>(pPage)->GetPageKind() == PageKind::Standard) + if (comphelper::LibreOfficeKit::isActive() && pSdPage->GetPageKind() == PageKind::Standard) { SdXImpressDocument* pDoc = getUnoModel(); SfxLokHelper::notifyDocumentSizeChangedAllViews(pDoc); } - if (hasCanvasPage()) - updateCanvasPreviewsGrid(); + if (HasCanvasPage()) + updatePagePreviewsGrid(pSdPage); } // Override SfxBaseModel::getUnoModel and return a more concrete type @@ -475,8 +476,11 @@ void SdDrawDocument::DeletePage(sal_uInt16 nPgNum) UpdatePageObjectsInNotes(nPgNum); - if (hasCanvasPage()) - updateCanvasPreviewsGrid(); + // if (HasCanvasPage()) + // { + // SdPage* pPage = static_cast<SdPage*>(GetPage(nPgNum)); + // updatePagePreviewsGrid(pPage); + // } } // Remove page @@ -500,8 +504,8 @@ rtl::Reference<SdrPage> SdDrawDocument::RemovePage(sal_uInt16 nPgNum) SfxLokHelper::notifyDocumentSizeChangedAllViews(pDoc); } - if (hasCanvasPage()) - updateCanvasPreviewsGrid(); + if (HasCanvasPage()) + updatePagePreviewsGrid(pSdPage); return pPage; } @@ -1456,7 +1460,7 @@ void SdDrawDocument::SetupNewPage ( sal_uInt16 SdDrawDocument::GetOrInsertCanvasPage() { - if (hasCanvasPage()) + if (HasCanvasPage()) return mpCanvasPage->GetPageNum() / 2; sal_uInt16 nLastPageNum = GetSdPageCount(PageKind::Standard); @@ -1543,10 +1547,39 @@ void SdDrawDocument::populatePagePreviewsGrid() } } -void SdDrawDocument::updateCanvasPreviewsGrid() +void SdDrawDocument::updatePagePreviewsGrid(SdPage* pPage) { - SdrPage* pPage = mpCanvasPage.get(); - pPage->ClearSdrObjList(); - populatePagePreviewsGrid(); + SdrObjList* pObjList = mpCanvasPage.get(); + sal_uInt16 nTotalPreviews = 0; + sal_uInt16 nPageCnt = GetSdPageCount(PageKind::Standard) - 1; // do not count canvas page + + std::vector<SdrObject*> aToRemove; + SdrObjListIter aIter(pObjList, SdrIterMode::Flat); + for (SdrObject* pObj = aIter.Next(); pObj; pObj = aIter.Next()) + { + if (pObj->GetObjIdentifier() == SdrObjKind::Page) + { + nTotalPreviews++; + SdrPageObj* pPageObj = static_cast<SdrPageObj*>(pObj); + if (pPage == pPageObj->GetReferencedPage()) + { + aToRemove.push_back(pObj); + } + } + } + for (SdrObject* pObject : aToRemove) + pObjList->RemoveObject(pObject->GetOrdNum()); + + // page inserted + if (nTotalPreviews < nPageCnt) + { + const sal_uInt16 nPageNum = pPage->GetPageNum(); + const ::tools::Long nPreviewWidth = pPage->GetWidth() / 5; + const ::tools::Long nPreviewHeight = pPage->GetHeight() / 5; + const ::tools::Long nX = (mpCanvasPage->GetWidth() - nPreviewWidth) / 2; + const ::tools::Long nY = (mpCanvasPage->GetHeight() - nPreviewHeight) / 2; + + mpCanvasPage->CreatePresObj(PresObjKind::PagePreview, true, ::tools::Rectangle(Point(nX,nY), Size(nPreviewWidth, nPreviewHeight)), OUString(), nPageNum); + } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
