diff options
-rw-r--r-- | include/svx/svdundo.hxx | 5 | ||||
-rw-r--r-- | reportdesign/source/core/inc/ReportUndoFactory.hxx | 2 | ||||
-rw-r--r-- | reportdesign/source/core/sdr/ReportUndoFactory.cxx | 4 | ||||
-rw-r--r-- | sc/source/core/data/drwlayer.cxx | 2 | ||||
-rw-r--r-- | sd/source/core/drawdoc3.cxx | 13 | ||||
-rw-r--r-- | svx/source/svdraw/svdundo.cxx | 37 |
6 files changed, 40 insertions, 23 deletions
diff --git a/include/svx/svdundo.hxx b/include/svx/svdundo.hxx index dc09f22be701..9d63557f8fc6 100644 --- a/include/svx/svdundo.hxx +++ b/include/svx/svdundo.hxx @@ -588,9 +588,10 @@ class SVX_DLLPUBLIC SdrUndoDelPage : public SdrUndoPageList SdrUndoGroup* pUndoGroup; std::unique_ptr<SfxPoolItem> mpFillBitmapItem; bool mbHasFillBitmap; + bool mbSoleOwnerOfFillBitmapProps; public: - SdrUndoDelPage(SdrPage& rNewPg); + SdrUndoDelPage(SdrPage& rNewPg, bool bSoleOwnerOfFillBitmapProps); virtual ~SdrUndoDelPage(); virtual void Undo() override; @@ -762,7 +763,7 @@ public: virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1); // Page - virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage); + virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage, bool bSoleOwnerOfFillBitmapProps = true); virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage); virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage); virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1); diff --git a/reportdesign/source/core/inc/ReportUndoFactory.hxx b/reportdesign/source/core/inc/ReportUndoFactory.hxx index 88d0024044ee..1839f1f70472 100644 --- a/reportdesign/source/core/inc/ReportUndoFactory.hxx +++ b/reportdesign/source/core/inc/ReportUndoFactory.hxx @@ -59,7 +59,7 @@ namespace rptui virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1) override; // page - virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage) override; + virtual SdrUndoAction* CreateUndoDeletePage(SdrPage& rPage, bool bSoleOwnerOfFillBitmapProps = true) override; virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage) override; virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage) override; virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1) override; diff --git a/reportdesign/source/core/sdr/ReportUndoFactory.cxx b/reportdesign/source/core/sdr/ReportUndoFactory.cxx index cbb5a8a305bf..566400cc009a 100644 --- a/reportdesign/source/core/sdr/ReportUndoFactory.cxx +++ b/reportdesign/source/core/sdr/ReportUndoFactory.cxx @@ -133,9 +133,9 @@ SdrUndoAction* OReportUndoFactory::CreateUndoMoveLayer(sal_uInt16 nLayerNum, Sdr } // page -SdrUndoAction* OReportUndoFactory::CreateUndoDeletePage(SdrPage& rPage) +SdrUndoAction* OReportUndoFactory::CreateUndoDeletePage(SdrPage& rPage, bool bSoleOwnerOfFillBitmapProps) { - return m_pUndoFactory->CreateUndoDeletePage( rPage ); + return m_pUndoFactory->CreateUndoDeletePage(rPage, bSoleOwnerOfFillBitmapProps); } SdrUndoAction* OReportUndoFactory::CreateUndoNewPage(SdrPage& rPage) diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx index 7ea675821d0a..b2c7ab9de54f 100644 --- a/sc/source/core/data/drwlayer.cxx +++ b/sc/source/core/data/drwlayer.cxx @@ -412,7 +412,7 @@ void ScDrawLayer::ScRemovePage( SCTAB nTab ) if (bRecording) { SdrPage* pPage = GetPage(static_cast<sal_uInt16>(nTab)); - AddCalcUndo(new SdrUndoDelPage(*pPage)); // Undo-Action becomes the page owner + AddCalcUndo(new SdrUndoDelPage(*pPage, true)); // Undo-Action becomes the page owner RemovePage( static_cast<sal_uInt16>(nTab) ); // just deliver, not deleting } else diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx index cf01895789ae..d857b380e238 100644 --- a/sd/source/core/drawdoc3.cxx +++ b/sd/source/core/drawdoc3.cxx @@ -792,8 +792,17 @@ bool SdDrawDocument::InsertBookmarkAsPage( aTest == aMPLayout && eKind == pTest->GetPageKind() ) { - if( bUndo ) - AddUndo(GetSdrUndoFactory().CreateUndoDeletePage(*pRefPage)); + if (bUndo) + { + bool bSoleOwnerOfStyleSheet = true; + if (pRefPage->IsMasterPage()) + { + const SfxStyleSheet* pRefSheet = pRefPage->getSdrPageProperties().GetStyleSheet(); + const SfxStyleSheet* pTestSheet = pTest->getSdrPageProperties().GetStyleSheet(); + bSoleOwnerOfStyleSheet = pRefSheet != pTestSheet; + } + AddUndo(GetSdrUndoFactory().CreateUndoDeletePage(*pRefPage, bSoleOwnerOfStyleSheet)); + } RemoveMasterPage(nPage); diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx index abc459fdfddb..ec5f2fe61751 100644 --- a/svx/source/svdraw/svdundo.cxx +++ b/svx/source/svdraw/svdundo.cxx @@ -1444,10 +1444,11 @@ SdrUndoPageList::~SdrUndoPageList() } -SdrUndoDelPage::SdrUndoDelPage(SdrPage& rNewPg) +SdrUndoDelPage::SdrUndoDelPage(SdrPage& rNewPg, bool bSoleOwnerOfFillBitmapProps) : SdrUndoPageList(rNewPg) , pUndoGroup(nullptr) , mbHasFillBitmap(false) + , mbSoleOwnerOfFillBitmapProps(bSoleOwnerOfFillBitmapProps) { bItsMine = true; @@ -1557,12 +1558,15 @@ void SdrUndoDelPage::clearFillBitmap() { if (mrPage.IsMasterPage()) { - SfxStyleSheet* const pStyleSheet = mrPage.getSdrPageProperties().GetStyleSheet(); - assert(bool(pStyleSheet)); // who took away my stylesheet? - SfxItemSet& rItemSet = pStyleSheet->GetItemSet(); - rItemSet.ClearItem(XATTR_FILLBITMAP); - if (mbHasFillBitmap) - rItemSet.ClearItem(XATTR_FILLSTYLE); + if (mbSoleOwnerOfFillBitmapProps) + { + SfxStyleSheet* const pStyleSheet = mrPage.getSdrPageProperties().GetStyleSheet(); + assert(bool(pStyleSheet)); // who took away my stylesheet? + SfxItemSet& rItemSet = pStyleSheet->GetItemSet(); + rItemSet.ClearItem(XATTR_FILLBITMAP); + if (mbHasFillBitmap) + rItemSet.ClearItem(XATTR_FILLSTYLE); + } } else { @@ -1577,12 +1581,15 @@ void SdrUndoDelPage::restoreFillBitmap() { if (mrPage.IsMasterPage()) { - SfxStyleSheet* const pStyleSheet = mrPage.getSdrPageProperties().GetStyleSheet(); - assert(bool(pStyleSheet)); // who took away my stylesheet? - SfxItemSet& rItemSet = pStyleSheet->GetItemSet(); - rItemSet.Put(*mpFillBitmapItem); - if (mbHasFillBitmap) - rItemSet.Put(XFillStyleItem(css::drawing::FillStyle_BITMAP)); + if (mbSoleOwnerOfFillBitmapProps) + { + SfxStyleSheet* const pStyleSheet = mrPage.getSdrPageProperties().GetStyleSheet(); + assert(bool(pStyleSheet)); // who took away my stylesheet? + SfxItemSet& rItemSet = pStyleSheet->GetItemSet(); + rItemSet.Put(*mpFillBitmapItem); + if (mbHasFillBitmap) + rItemSet.Put(XFillStyleItem(css::drawing::FillStyle_BITMAP)); + } } else { @@ -1839,9 +1846,9 @@ SdrUndoAction* SdrUndoFactory::CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLaye } // page -SdrUndoAction* SdrUndoFactory::CreateUndoDeletePage(SdrPage& rPage) +SdrUndoAction* SdrUndoFactory::CreateUndoDeletePage(SdrPage& rPage, bool bSoleOwnerOfFillBitmapProps) { - return new SdrUndoDelPage( rPage ); + return new SdrUndoDelPage(rPage, bSoleOwnerOfFillBitmapProps); } SdrUndoAction* SdrUndoFactory::CreateUndoNewPage(SdrPage& rPage) |