cui/source/inc/cuitabarea.hxx | 30 ++++++------------ cui/source/tabpages/tabarea.cxx | 61 -------------------------------------- cui/source/tabpages/tparea.cxx | 23 +++++++++----- cui/source/tabpages/tpbitmap.cxx | 21 ++++++++++--- cui/source/tabpages/tpgradnt.cxx | 24 +++++++++++--- cui/source/tabpages/tphatch.cxx | 23 +++++++++++--- cui/source/tabpages/tppattern.cxx | 24 +++++++++++--- 7 files changed, 99 insertions(+), 107 deletions(-)
New commits: commit 6595fcacfa9afb5f09465785aa0c4af46e972ef0 Author: Justin Luth <justin.l...@collabora.com> AuthorDate: Sat Nov 9 15:21:10 2024 -0500 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Wed Nov 13 09:25:46 2024 +0100 tdf#103916 tdf#163824 cui tparea: always save changed Fill Lists This was only working for some EditEng components. This change makes it work for all uses of Area Fill. I put this in the destructor because the current implementation (for SvxAreaTabDialog) SavePalettes() on both OK and CANCEL. I first tried putting it in DeactivatePage, but that is not called on a CANCEL, or on a switch to another AREA type. [ColorListState doesn't need this treatment since we don't save to disk here, plus it needs to be shared between SvxAreaTabDialog pages.] NOTE: the rename/delete fix for bug 157467 is probably a dependency because this patch will significantly increase the likelihood that people will try to manage these lists. Change-Id: I65a84eb6befe91620fd43f3cec2d3ce4dd7ae92d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176325 Tested-by: Jenkins Reviewed-by: Justin Luth <jl...@mail.com> diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx index f0f5bdc28a5b..7021a7aa7847 100644 --- a/cui/source/inc/cuitabarea.hxx +++ b/cui/source/inc/cuitabarea.hxx @@ -87,6 +87,12 @@ enum class PageType Transparence, }; +class AreaTabHelper +{ +public: + static OUString GetPalettePath(); +}; + class SvxAreaTabDialog final : public SfxTabDialogController { SdrModel* mpDrawModel; @@ -103,10 +109,6 @@ class SvxAreaTabDialog final : public SfxTabDialogController XPatternListRef mpNewPatternList; ChangeType mnColorListState; - ChangeType mnBitmapListState; - ChangeType mnPatternListState; - ChangeType mnGradientListState; - ChangeType mnHatchingListState; virtual void PageCreated(const OUString& rId, SfxTabPage &rPage) override; @@ -230,10 +232,6 @@ private: ChangeType maFixed_ChangeType; ChangeType* m_pnColorListState; - ChangeType* m_pnBitmapListState; - ChangeType* m_pnPatternListState; - ChangeType* m_pnGradientListState; - ChangeType* m_pnHatchingListState; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; @@ -294,10 +292,6 @@ public: virtual void PageCreated(const SfxAllItemSet& aSet) override; void CreatePage(sal_Int32 nId, SfxTabPage& rTab); void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } - void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; } - void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; } - void SetBmpChgd( ChangeType* pIn ) { m_pnBitmapListState = pIn; } - void SetPtrnChgd( ChangeType* pIn ) { m_pnPatternListState = pIn; } }; @@ -362,7 +356,7 @@ private: XColorListRef m_pColorList; XGradientListRef m_pGradientList; - ChangeType* m_pnGradientListState; + ChangeType m_nGradientListState; ChangeType* m_pnColorListState; XFillAttrSetItem m_aXFillAttr; @@ -429,7 +423,6 @@ public: void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetGradientList( XGradientListRef const & pGrdLst) { m_pGradientList = pGrdLst; } - void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } }; @@ -443,7 +436,7 @@ private: XColorListRef m_pColorList; XHatchListRef m_pHatchingList; - ChangeType* m_pnHatchingListState; + ChangeType m_nHatchingListState; ChangeType* m_pnColorListState; XFillAttrSetItem m_aXFillAttr; @@ -498,7 +491,6 @@ public: void SetHatchingList( XHatchListRef const & pHtchLst) { m_pHatchingList = pHtchLst; } - void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } }; @@ -511,7 +503,7 @@ private: const SfxItemSet& m_rOutAttrs; XBitmapListRef m_pBitmapList; - ChangeType* m_pnBitmapListState; + ChangeType m_nBitmapListState; double m_fObjectWidth; double m_fObjectHeight; @@ -574,7 +566,6 @@ public: virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetBitmapList( const XBitmapListRef& pBmpLst) { m_pBitmapList = pBmpLst; } - void SetBmpChgd( ChangeType* pIn ) { m_pnBitmapListState = pIn; } }; /************************************************************************/ @@ -587,7 +578,7 @@ private: XColorListRef m_pColorList; XPatternListRef m_pPatternList; - ChangeType* m_pnPatternListState; + ChangeType m_nPatternListState; ChangeType* m_pnColorListState; XFillAttrSetItem m_aXFillAttr; @@ -631,7 +622,6 @@ public: void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetPatternList( XPatternListRef const & pPatternList) { m_pPatternList = pPatternList; } - void SetPtrnChgd( ChangeType* pIn ) { m_pnPatternListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } void ChangeColor_Impl(); }; diff --git a/cui/source/tabpages/tabarea.cxx b/cui/source/tabpages/tabarea.cxx index 498afe81fdc5..6a42f8328b72 100644 --- a/cui/source/tabpages/tabarea.cxx +++ b/cui/source/tabpages/tabarea.cxx @@ -46,12 +46,7 @@ SvxAreaTabDialog::SvxAreaTabDialog mpNewBitmapList ( pModel->GetBitmapList() ), mpPatternList ( pModel->GetPatternList() ), mpNewPatternList ( pModel->GetPatternList() ), - - mnColorListState ( ChangeType::NONE ), - mnBitmapListState ( ChangeType::NONE ), - mnPatternListState ( ChangeType::NONE ), - mnGradientListState ( ChangeType::NONE ), - mnHatchingListState ( ChangeType::NONE ) + mnColorListState(ChangeType::NONE) { if (bSlideBackground) AddTabPage(u"RID_SVXPAGE_AREA"_ustr, SvxAreaTabPage::CreateWithSlideBackground, nullptr); @@ -119,56 +114,6 @@ void SvxAreaTabDialog::SavePalettes() } // save the tables when they have been changed - - OUString aPalettePath(SvtPathOptions().GetPalettePath()); - OUString aPath; - sal_Int32 nIndex = 0; - do - { - aPath = aPalettePath.getToken(0, ';', nIndex); - } - while (nIndex >= 0); - - if( mnHatchingListState & ChangeType::MODIFIED ) - { - mpHatchingList->SetPath( aPath ); - mpHatchingList->Save(); - - SvxHatchListItem aItem( mpHatchingList, SID_HATCH_LIST ); - // ToolBoxControls are informed: - pShell->PutItem( aItem ); - } - - if( mnBitmapListState & ChangeType::MODIFIED ) - { - mpBitmapList->SetPath( aPath ); - mpBitmapList->Save(); - - SvxBitmapListItem aItem( mpBitmapList, SID_BITMAP_LIST ); - // ToolBoxControls are informed: - pShell->PutItem( aItem ); - } - - if( mnPatternListState & ChangeType::MODIFIED ) - { - mpPatternList->SetPath( aPath ); - mpPatternList->Save(); - - SvxPatternListItem aItem( mpPatternList, SID_PATTERN_LIST ); - // ToolBoxControls are informed: - pShell->PutItem( aItem ); - } - - if( mnGradientListState & ChangeType::MODIFIED ) - { - mpGradientList->SetPath( aPath ); - mpGradientList->Save(); - - SvxGradientListItem aItem( mpGradientList, SID_GRADIENT_LIST ); - // ToolBoxControls are informed: - pShell->PutItem( aItem ); - } - if (mnColorListState & ChangeType::MODIFIED && mpColorList.is()) { SvxColorListItem aItem( mpColorList, SID_COLOR_TABLE ); @@ -201,10 +146,6 @@ void SvxAreaTabDialog::PageCreated(const OUString& rId, SfxTabPage &rPage) static_cast<SvxAreaTabPage&>(rPage).SetHatchingList( mpHatchingList ); static_cast<SvxAreaTabPage&>(rPage).SetBitmapList( mpBitmapList ); static_cast<SvxAreaTabPage&>(rPage).SetPatternList( mpPatternList ); - static_cast<SvxAreaTabPage&>(rPage).SetGrdChgd( &mnGradientListState ); - static_cast<SvxAreaTabPage&>(rPage).SetHtchChgd( &mnHatchingListState ); - static_cast<SvxAreaTabPage&>(rPage).SetBmpChgd( &mnBitmapListState ); - static_cast<SvxAreaTabPage&>(rPage).SetPtrnChgd( &mnPatternListState ); static_cast<SvxAreaTabPage&>(rPage).SetColorChgd( &mnColorListState ); } else if (rId == "RID_SVXPAGE_SHADOW") diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx index efd8dfacce78..068d08283f70 100644 --- a/cui/source/tabpages/tparea.cxx +++ b/cui/source/tabpages/tparea.cxx @@ -29,6 +29,7 @@ #include <svx/xgrscit.hxx> #include <cuitabarea.hxx> #include <sfx2/tabdlg.hxx> +#include <unotools/pathoptions.hxx> using namespace com::sun::star; @@ -67,6 +68,20 @@ void lclExtendSize(Size& rSize, const Size& rInputSize) } // end anonymous namespace +OUString AreaTabHelper::GetPalettePath() +{ + const OUString aPalettePath = SvtPathOptions().GetPalettePath(); + OUString aPath; + sal_Int32 nIndex = 0; + do + { + aPath = aPalettePath.getToken(0, ';', nIndex); + } + while (nIndex >= 0); + + return aPath; +} + /************************************************************************* |* |* Dialog to modify fill-attributes @@ -80,10 +95,6 @@ SvxAreaTabPage::SvxAreaTabPage(weld::Container* pPage, weld::DialogController* p , maFixed_ChangeType(ChangeType::NONE) // init with pointers to fixed ChangeType , m_pnColorListState(&maFixed_ChangeType) - , m_pnBitmapListState(&maFixed_ChangeType) - , m_pnPatternListState(&maFixed_ChangeType) - , m_pnGradientListState(&maFixed_ChangeType) - , m_pnHatchingListState(&maFixed_ChangeType) , m_aXFillAttr(rInAttrs.GetPool()) , m_rXFSet(m_aXFillAttr.GetItemSet()) , m_xFillTab(m_xBuilder->weld_container(u"fillstylebox"_ustr)) @@ -478,7 +489,6 @@ void SvxAreaTabPage::CreatePage(sal_Int32 nId, SfxTabPage& rTab) auto& rGradientTab = static_cast<SvxGradientTabPage&>(rTab); rGradientTab.SetColorList(m_pColorList); rGradientTab.SetGradientList(m_pGradientList); - rGradientTab.SetGrdChgd(m_pnGradientListState); rGradientTab.SetColorChgd(m_pnColorListState); rGradientTab.Construct(); rGradientTab.ActivatePage(m_rXFSet); @@ -490,7 +500,6 @@ void SvxAreaTabPage::CreatePage(sal_Int32 nId, SfxTabPage& rTab) auto& rHatchTab = static_cast<SvxHatchTabPage&>(rTab); rHatchTab.SetColorList(m_pColorList); rHatchTab.SetHatchingList(m_pHatchingList); - rHatchTab.SetHtchChgd(m_pnHatchingListState); rHatchTab.SetColorChgd(m_pnColorListState); rHatchTab.Construct(); rHatchTab.ActivatePage(m_rXFSet); @@ -501,7 +510,6 @@ void SvxAreaTabPage::CreatePage(sal_Int32 nId, SfxTabPage& rTab) { auto& rBitmapTab = static_cast<SvxBitmapTabPage&>(rTab); rBitmapTab.SetBitmapList(m_pBitmapList); - rBitmapTab.SetBmpChgd(m_pnBitmapListState); rBitmapTab.Construct(); rBitmapTab.ActivatePage(m_rXFSet); rBitmapTab.Reset(&m_rXFSet); @@ -512,7 +520,6 @@ void SvxAreaTabPage::CreatePage(sal_Int32 nId, SfxTabPage& rTab) auto& rPatternTab = static_cast<SvxPatternTabPage&>(rTab); rPatternTab.SetColorList(m_pColorList); rPatternTab.SetPatternList(m_pPatternList); - rPatternTab.SetPtrnChgd(m_pnPatternListState); rPatternTab.SetColorChgd(m_pnColorListState); rPatternTab.Construct(); rPatternTab.ActivatePage(m_rXFSet); diff --git a/cui/source/tabpages/tpbitmap.cxx b/cui/source/tabpages/tpbitmap.cxx index 17819fb36ebf..9e016879b4cb 100644 --- a/cui/source/tabpages/tpbitmap.cxx +++ b/cui/source/tabpages/tpbitmap.cxx @@ -20,6 +20,7 @@ #include <memory> #include <stdlib.h> #include <tools/urlobj.hxx> +#include <svx/drawitem.hxx> #include <svx/xbtmpit.hxx> #include <svx/svxids.hrc> #include <strings.hrc> @@ -36,6 +37,7 @@ #include <dialmgr.hxx> #include <svx/dlgutil.hxx> #include <svl/intitem.hxx> +#include <sfx2/objsh.hxx> #include <sfx2/opengrf.hxx> #include <vcl/image.hxx> #include <vcl/svapp.hxx> @@ -69,7 +71,7 @@ enum TileOffset SvxBitmapTabPage::SvxBitmapTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs) : SfxTabPage(pPage, pController, u"cui/ui/imagetabpage.ui"_ustr, u"ImageTabPage"_ustr, &rInAttrs) , m_rOutAttrs(rInAttrs) - , m_pnBitmapListState(nullptr) + , m_nBitmapListState(ChangeType::NONE) , m_fObjectWidth(0.0) , m_fObjectHeight(0.0) , m_bLogicalSize(false) @@ -140,6 +142,17 @@ SvxBitmapTabPage::~SvxBitmapTabPage() m_xBitmapLBWin.reset(); m_xBitmapLB.reset(); m_xCtlBitmapPreview.reset(); + + if (m_nBitmapListState & ChangeType::MODIFIED) + { + m_pBitmapList->SetPath(AreaTabHelper::GetPalettePath()); + m_pBitmapList->Save(); + + // ToolBoxControls are informed: + SfxObjectShell* pShell = SfxObjectShell::Current(); + if (pShell) + pShell->PutItem(SvxBitmapListItem(m_pBitmapList, SID_BITMAP_LIST)); + } } void SvxBitmapTabPage::Construct() @@ -538,7 +551,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickRenameHdl, SvxPresetListBox*, void) m_xBitmapLB->SetItemText(nId, aName); - *m_pnBitmapListState |= ChangeType::MODIFIED; + m_nBitmapListState |= ChangeType::MODIFIED; } else { @@ -581,7 +594,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickDeleteHdl, SvxPresetListBox*, void) m_aCtlBitmapPreview.Invalidate(); } ModifyBitmapHdl(m_xBitmapLB.get()); - *m_pnBitmapListState |= ChangeType::MODIFIED; + m_nBitmapListState |= ChangeType::MODIFIED; } IMPL_LINK_NOARG( SvxBitmapTabPage, ModifyBitmapSizeHdl, weld::MetricSpinButton&, void ) @@ -776,7 +789,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickImportHdl, weld::Button&, void) m_xBitmapLB->InsertItem( nId + 1, Image(aBitmap), aName ); m_xBitmapLB->SelectItem( nId + 1 ); - *m_pnBitmapListState |= ChangeType::MODIFIED; + m_nBitmapListState |= ChangeType::MODIFIED; ModifyBitmapHdl(m_xBitmapLB.get()); } diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx index 555cc834c91e..6e24a438fbf1 100644 --- a/cui/source/tabpages/tpgradnt.cxx +++ b/cui/source/tabpages/tpgradnt.cxx @@ -22,8 +22,10 @@ #include <vcl/svapp.hxx> #include <vcl/weld.hxx> #include <sfx2/dialoghelper.hxx> +#include <sfx2/objsh.hxx> #include <strings.hrc> +#include <svx/drawitem.hxx> #include <svx/xfillit0.hxx> #include <svx/xflgrit.hxx> #include <svx/colorbox.hxx> @@ -34,6 +36,7 @@ #include <dialmgr.hxx> #include <svx/dialmgr.hxx> #include <svx/strings.hrc> +#include <svx/svxids.hrc> #include <basegfx/utils/gradienttools.hxx> #include <sal/log.hxx> @@ -42,7 +45,7 @@ using namespace com::sun::star; SvxGradientTabPage::SvxGradientTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs) : SfxTabPage(pPage, pController, u"cui/ui/gradientpage.ui"_ustr, u"GradientPage"_ustr, &rInAttrs) , m_rOutAttrs(rInAttrs) - , m_pnGradientListState(nullptr) + , m_nGradientListState(ChangeType::NONE) , m_pnColorListState(nullptr) , m_aXFillAttr(rInAttrs.GetPool()) , m_rXFSet(m_aXFillAttr.GetItemSet()) @@ -122,6 +125,17 @@ SvxGradientTabPage::~SvxGradientTabPage() m_xGradientLB.reset(); m_xLbColorTo.reset(); m_xLbColorFrom.reset(); + + if (m_nGradientListState & ChangeType::MODIFIED) + { + m_pGradientList->SetPath(AreaTabHelper::GetPalettePath()); + m_pGradientList->Save(); + + // ToolBoxControls are informed: + SfxObjectShell* pShell = SfxObjectShell::Current(); + if (pShell) + pShell->PutItem(SvxGradientListItem(m_pGradientList, SID_GRADIENT_LIST)); + } } void SvxGradientTabPage::Construct() @@ -383,7 +397,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickAddHdl_Impl, weld::Button&, void) m_xGradientLB->SelectItem( nId + 1 ); m_xGradientLB->Resize(); - *m_pnGradientListState |= ChangeType::MODIFIED; + m_nGradientListState |= ChangeType::MODIFIED; ChangeGradientHdl_Impl(); } @@ -426,7 +440,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickModifyHdl_Impl, weld::Button&, void) m_xGradientLB->InsertItem( nId, Image(aBitmap), aName, static_cast<sal_uInt16>(nPos) ); m_xGradientLB->SelectItem( nId ); - *m_pnGradientListState |= ChangeType::MODIFIED; + m_nGradientListState |= ChangeType::MODIFIED; } IMPL_LINK_NOARG(SvxGradientTabPage, ClickDeleteHdl_Impl, SvxPresetListBox*, void) @@ -452,7 +466,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickDeleteHdl_Impl, SvxPresetListBox*, void ChangeGradientHdl_Impl(); - *m_pnGradientListState |= ChangeType::MODIFIED; + m_nGradientListState |= ChangeType::MODIFIED; } } // determine button state @@ -488,7 +502,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickRenameHdl_Impl, SvxPresetListBox*, void m_xGradientLB->SetItemText( nId, aName ); - *m_pnGradientListState |= ChangeType::MODIFIED; + m_nGradientListState |= ChangeType::MODIFIED; } else { diff --git a/cui/source/tabpages/tphatch.cxx b/cui/source/tabpages/tphatch.cxx index 311e7d46b934..27e41070b6fa 100644 --- a/cui/source/tabpages/tphatch.cxx +++ b/cui/source/tabpages/tphatch.cxx @@ -23,8 +23,10 @@ #include <vcl/svapp.hxx> #include <vcl/weld.hxx> #include <sfx2/dialoghelper.hxx> +#include <sfx2/objsh.hxx> #include <strings.hrc> +#include <svx/drawitem.hxx> #include <svx/xfillit0.hxx> #include <svx/xflhtit.hxx> #include <svx/xflclit.hxx> @@ -46,7 +48,7 @@ using namespace com::sun::star; SvxHatchTabPage::SvxHatchTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs) : SfxTabPage(pPage, pController, u"cui/ui/hatchpage.ui"_ustr, u"HatchPage"_ustr, &rInAttrs) , m_rOutAttrs(rInAttrs) - , m_pnHatchingListState(nullptr) + , m_nHatchingListState(ChangeType::NONE) , m_pnColorListState(nullptr) , m_aXFillAttr(rInAttrs.GetPool()) , m_rXFSet(m_aXFillAttr.GetItemSet()) @@ -124,6 +126,17 @@ SvxHatchTabPage::~SvxHatchTabPage() m_xHatchLB.reset(); m_xLbBackgroundColor.reset(); m_xLbLineColor.reset(); + + if (m_nHatchingListState & ChangeType::MODIFIED) + { + m_pHatchingList->SetPath(AreaTabHelper::GetPalettePath()); + m_pHatchingList->Save(); + + // ToolBoxControls are informed: + SfxObjectShell* pShell = SfxObjectShell::Current(); + if (pShell) + pShell->PutItem(SvxHatchListItem(m_pHatchingList, SID_HATCH_LIST)); + } } void SvxHatchTabPage::Construct() @@ -455,7 +468,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickAddHdl_Impl, weld::Button&, void) m_xHatchLB->SelectItem( nId + 1 ); m_xHatchLB->Resize(); - *m_pnHatchingListState |= ChangeType::MODIFIED; + m_nHatchingListState |= ChangeType::MODIFIED; ChangeHatchHdl_Impl(); } @@ -489,7 +502,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickModifyHdl_Impl, weld::Button&, void) m_xLbLineColor->SaveValue(); m_xLbBackgroundColor->SaveValue(); - *m_pnHatchingListState |= ChangeType::MODIFIED; + m_nHatchingListState |= ChangeType::MODIFIED; } IMPL_LINK_NOARG(SvxHatchTabPage, ClickDeleteHdl_Impl, SvxPresetListBox*, void) @@ -517,7 +530,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickDeleteHdl_Impl, SvxPresetListBox*, void) ChangeHatchHdl_Impl(); - *m_pnHatchingListState |= ChangeType::MODIFIED; + m_nHatchingListState |= ChangeType::MODIFIED; } IMPL_LINK_NOARG(SvxHatchTabPage, ClickRenameHdl_Impl, SvxPresetListBox*, void ) @@ -548,7 +561,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickRenameHdl_Impl, SvxPresetListBox*, void ) m_xHatchLB->SetItemText(nId, aName); - *m_pnHatchingListState |= ChangeType::MODIFIED; + m_nHatchingListState |= ChangeType::MODIFIED; } else { diff --git a/cui/source/tabpages/tppattern.cxx b/cui/source/tabpages/tppattern.cxx index d6f591d1fcbe..3e7a20b37b80 100644 --- a/cui/source/tabpages/tppattern.cxx +++ b/cui/source/tabpages/tppattern.cxx @@ -20,14 +20,17 @@ #include <memory> #include <tools/urlobj.hxx> #include <sfx2/dialoghelper.hxx> +#include <sfx2/objsh.hxx> #include <svx/colorbox.hxx> #include <svx/dialmgr.hxx> #include <vcl/BitmapTools.hxx> #include <vcl/svapp.hxx> #include <vcl/weld.hxx> #include <svx/strings.hrc> +#include <svx/svxids.hrc> #include <strings.hrc> +#include <svx/drawitem.hxx> #include <svx/xfillit0.hxx> #include <svx/xbtmpit.hxx> #include <svx/xtable.hxx> @@ -72,7 +75,7 @@ public: SvxPatternTabPage::SvxPatternTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs) : SvxTabPage(pPage, pController, u"cui/ui/patterntabpage.ui"_ustr, u"PatternTabPage"_ustr, rInAttrs) , m_rOutAttrs(rInAttrs) - , m_pnPatternListState(nullptr) + , m_nPatternListState(ChangeType::NONE) , m_pnColorListState(nullptr) , m_aXFillAttr(rInAttrs.GetPool()) , m_rXFSet(m_aXFillAttr.GetItemSet()) @@ -123,6 +126,17 @@ SvxPatternTabPage::~SvxPatternTabPage() m_xLbBackgroundColor.reset(); m_xLbColor.reset(); m_xCtlPixel.reset(); + + if (m_nPatternListState & ChangeType::MODIFIED) + { + m_pPatternList->SetPath(AreaTabHelper::GetPalettePath()); + m_pPatternList->Save(); + + // ToolBoxControls are informed: + SfxObjectShell* pShell = SfxObjectShell::Current(); + if (pShell) + pShell->PutItem(SvxPatternListItem(m_pPatternList, SID_PATTERN_LIST)); + } } void SvxPatternTabPage::Construct() @@ -386,7 +400,7 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickAddHdl_Impl, weld::Button&, void) m_xPatternLB->SelectItem( nId + 1 ); m_xPatternLB->Resize(); - *m_pnPatternListState |= ChangeType::MODIFIED; + m_nPatternListState |= ChangeType::MODIFIED; ChangePatternHdl_Impl(m_xPatternLB.get()); } @@ -419,7 +433,7 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickModifyHdl_Impl, weld::Button&, void) m_xPatternLB->InsertItem( nId, Image(aBitmap), aName, static_cast<sal_uInt16>(nPos) ); m_xPatternLB->SelectItem( nId ); - *m_pnPatternListState |= ChangeType::MODIFIED; + m_nPatternListState |= ChangeType::MODIFIED; } @@ -453,7 +467,7 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickRenameHdl_Impl, SvxPresetListBox*, void) m_xPatternLB->SetItemText( nId, aName ); - *m_pnPatternListState |= ChangeType::MODIFIED; + m_nPatternListState |= ChangeType::MODIFIED; } else { @@ -488,7 +502,7 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickDeleteHdl_Impl, SvxPresetListBox*, void) ChangePatternHdl_Impl(m_xPatternLB.get()); - *m_pnPatternListState |= ChangeType::MODIFIED; + m_nPatternListState |= ChangeType::MODIFIED; } } // determine button state