From 7adc1fa124a334578657466e32dbbbaad3439350 Mon Sep 17 00:00:00 2001 From: Sarper Akdemir Date: Mon, 1 Nov 2021 01:23:31 +0300 Subject: WIP: refactor SfxObjectShell out of SvxColorItem Change-Id: Ib6be30a543b3ecac117260e7b0d4a4a5cb3e2411 --- .../controller/dialogs/tp_3D_SceneIllumination.cxx | 18 +++---- cui/source/dialogs/SpellDialog.cxx | 2 +- cui/source/tabpages/backgrnd.cxx | 8 +-- cui/source/tabpages/chardlg.cxx | 2 +- dbaccess/source/ui/control/sqledit.cxx | 4 +- editeng/source/editeng/editeng.cxx | 4 +- editeng/source/items/textitem.cxx | 61 ++++++---------------- editeng/source/rtf/rtfitem.cxx | 5 +- extensions/source/propctrlr/fontdialog.cxx | 2 +- filter/source/msfilter/svdfppt.cxx | 6 +-- include/editeng/colritem.hxx | 15 +++--- include/editeng/editeng.hxx | 3 ++ include/sfx2/ColorSets.hxx | 14 +++-- include/svx/svx3ditems.hxx | 44 ++++++++-------- reportdesign/source/ui/misc/UITools.cxx | 2 +- sc/qa/unit/subsequent_export-test.cxx | 4 +- sc/source/filter/excel/xistyle.cxx | 2 +- sc/source/filter/html/htmlpars.cxx | 2 +- sc/source/filter/oox/stylesbuffer.cxx | 2 +- sc/source/filter/orcus/interface.cxx | 2 +- sc/source/ui/app/inputhdl.cxx | 4 +- sc/source/ui/view/editsh.cxx | 2 +- sc/source/ui/view/formatsh.cxx | 8 +-- sc/source/ui/view/output2.cxx | 2 +- sc/source/ui/view/tabvwshf.cxx | 2 +- sd/qa/unit/dialogs-test.cxx | 2 +- sd/source/core/drawdoc4.cxx | 20 +++---- sd/source/core/stlpool.cxx | 16 +++--- sd/source/ui/func/fuchar.cxx | 2 +- sd/source/ui/func/fuoaprms.cxx | 4 +- sd/source/ui/func/futempl.cxx | 2 +- sd/source/ui/view/drtxtob1.cxx | 4 +- sfx2/source/styles/ColorSets.cxx | 13 +++++ svx/source/customshapes/EnhancedCustomShape3d.cxx | 10 ++-- svx/source/engine3d/float3d.cxx | 38 +++++++------- svx/source/svdraw/svdfmtf.cxx | 2 +- svx/source/svdraw/svdpdf.cxx | 3 +- svx/source/toolbars/extrusionbar.cxx | 2 +- sw/source/core/doc/DocumentStylePoolManager.cxx | 6 +-- sw/source/core/table/swtable.cxx | 2 +- sw/source/filter/html/htmldrawreader.cxx | 2 +- sw/source/filter/html/htmlforw.cxx | 2 +- sw/source/filter/html/svxcss1.cxx | 2 +- sw/source/filter/html/swhtml.cxx | 2 +- sw/source/uibase/app/docshini.cxx | 2 +- sw/source/uibase/app/swmodul1.cxx | 2 +- sw/source/uibase/shells/basesh.cxx | 2 +- sw/source/uibase/shells/drwtxtex.cxx | 4 +- sw/source/uibase/shells/frmsh.cxx | 2 +- sw/source/uibase/shells/tabsh.cxx | 2 +- sw/source/uibase/shells/textsh1.cxx | 4 +- 51 files changed, 184 insertions(+), 188 deletions(-) diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx index c4b28162d08c..c9bda82dda39 100644 --- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx +++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx @@ -470,44 +470,44 @@ void ThreeD_SceneIllumination_TabPage::updatePreview() LightSourceInfo* pInfo = &m_pLightSourceInfoList[0]; // AmbientColor - aItemSet.Put(makeSvx3DAmbientcolorItem(m_xLB_AmbientLight->GetSelectEntryColor())); + aItemSet.Put(makeSvx3DAmbientcolorItem(m_xLB_AmbientLight->GetSelectEntryColor(), aItemSet)); - aItemSet.Put(makeSvx3DLightcolor1Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor1Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff1Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection1Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[1]; - aItemSet.Put(makeSvx3DLightcolor2Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor2Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff2Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection2Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[2]; - aItemSet.Put(makeSvx3DLightcolor3Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor3Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff3Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection3Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[3]; - aItemSet.Put(makeSvx3DLightcolor4Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor4Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff4Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection4Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[4]; - aItemSet.Put(makeSvx3DLightcolor5Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor5Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff5Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection5Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[5]; - aItemSet.Put(makeSvx3DLightcolor6Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor6Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff6Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection6Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[6]; - aItemSet.Put(makeSvx3DLightcolor7Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor7Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff7Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection7Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); pInfo = &m_pLightSourceInfoList[7]; - aItemSet.Put(makeSvx3DLightcolor8Item(pInfo->aLightSource.nDiffuseColor)); + aItemSet.Put(makeSvx3DLightcolor8Item(pInfo->aLightSource.nDiffuseColor, aItemSet)); aItemSet.Put(makeSvx3DLightOnOff8Item(pInfo->aLightSource.bIsEnabled)); aItemSet.Put(makeSvx3DLightDirection8Item(Direction3DToB3DVector(pInfo->aLightSource.aDirection))); diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx index b583fa03768e..5955a0c6b727 100644 --- a/cui/source/dialogs/SpellDialog.cxx +++ b/cui/source/dialogs/SpellDialog.cxx @@ -1665,7 +1665,7 @@ void SentenceEditWindow_Impl::MoveErrorMarkTo(sal_Int32 nStart, sal_Int32 nEnd, m_xEditEngine->RemoveAttribs(aAll, false, EE_CHAR_WEIGHT_CTL); SfxItemSet aSet(m_xEditEngine->GetEmptyItemSet()); - aSet.Put(SvxColorItem(bGrammarError ? COL_LIGHTBLUE : COL_LIGHTRED, EE_CHAR_COLOR)); + aSet.Put(SvxColorItem(bGrammarError ? COL_LIGHTBLUE : COL_LIGHTRED, ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR)); aSet.Put(SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT)); aSet.Put(SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT_CJK)); aSet.Put(SvxWeightItem(WEIGHT_BOLD, EE_CHAR_WEIGHT_CTL)); diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx index 3aac1fae51a7..0c42e86b2b25 100644 --- a/cui/source/tabpages/backgrnd.cxx +++ b/cui/source/tabpages/backgrnd.cxx @@ -153,8 +153,8 @@ bool SvxBkgTabPage::FillItemSet( SfxItemSet* rCoreSet ) { if ( SID_ATTR_CHAR_BACK_COLOR == nSlot ) { - maSet.Put( SvxColorItem( COL_TRANSPARENT, nWhich ) ); - rCoreSet->Put( SvxColorItem( COL_TRANSPARENT, nWhich ) ); + maSet.Put( SvxColorItem( COL_TRANSPARENT, ColorSets::getColorSetsFromItemSet(maSet), nWhich ) ); + rCoreSet->Put( SvxColorItem( COL_TRANSPARENT, ColorSets::getColorSetsFromItemSet(maSet), nWhich ) ); } else { @@ -169,8 +169,8 @@ bool SvxBkgTabPage::FillItemSet( SfxItemSet* rCoreSet ) XFillColorItem aColorItem( maSet.Get( XATTR_FILLCOLOR ) ); if ( SID_ATTR_CHAR_BACK_COLOR == nSlot ) { - maSet.Put( SvxColorItem( aColorItem.GetColorValue(), nWhich ) ); - rCoreSet->Put( SvxColorItem( aColorItem.GetColorValue(), nWhich ) ); + maSet.Put( SvxColorItem( aColorItem.GetColorValue(), ColorSets::getColorSetsFromItemSet(maSet), nWhich ) ); + rCoreSet->Put( SvxColorItem( aColorItem.GetColorValue(), ColorSets::getColorSetsFromItemSet(maSet), nWhich ) ); } else { diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx index a4cc33265a18..5a1c6dd79596 100644 --- a/cui/source/tabpages/chardlg.cxx +++ b/cui/source/tabpages/chardlg.cxx @@ -1595,7 +1595,7 @@ bool SvxCharEffectsPage::FillItemSetColor_Impl( SfxItemSet& rSet ) } if (bChanged) - rSet.Put( SvxColorItem( aSelectedColor, nWhich ) ); + rSet.Put( SvxColorItem( aSelectedColor, ColorSets::getColorSetsFromItemSet(rSet), nWhich ) ); else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) ) rSet.InvalidateItem(nWhich); diff --git a/dbaccess/source/ui/control/sqledit.cxx b/dbaccess/source/ui/control/sqledit.cxx index c53f684dab4a..482dad8812ef 100644 --- a/dbaccess/source/ui/control/sqledit.cxx +++ b/dbaccess/source/ui/control/sqledit.cxx @@ -210,7 +210,7 @@ void SQLEditView::UpdateData() for (auto const& portion : aPortions) { SfxItemSet aSet(rEditEngine.GetEmptyItemSet()); - aSet.Put(SvxColorItem(GetColorValue(portion.tokenType), EE_CHAR_COLOR)); + aSet.Put(SvxColorItem(GetColorValue(portion.tokenType), ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR)); rEditEngine.QuickSetAttribs(aSet, ESelection(nLine, portion.nBegin, nLine, portion.nEnd)); } } @@ -280,7 +280,7 @@ void SQLEditView::DoBracketHilight(sal_uInt16 nKey) if (!nCount) { SfxItemSet aSet(m_xEditEngine->GetEmptyItemSet()); - aSet.Put(SvxColorItem(Color(0,0,0), EE_CHAR_COLOR)); + aSet.Put(SvxColorItem(Color(0,0,0), ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR)); aSet.Put(SvxWeightItem(WEIGHT_ULTRABOLD, EE_CHAR_WEIGHT)); aSet.Put(SvxWeightItem(WEIGHT_ULTRABOLD, EE_CHAR_WEIGHT_CJK)); aSet.Put(SvxWeightItem(WEIGHT_ULTRABOLD, EE_CHAR_WEIGHT_CTL)); diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index b90ad3127fee..bdf4dcae130b 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -2635,8 +2635,8 @@ void EditEngine::SetFontInfoInItemSet( SfxItemSet& rSet, const SvxFont& rFont ) rSet.Put( SvxShadowedItem( rFont.IsShadow(), EE_CHAR_SHADOW ) ); rSet.Put( SvxEscapementItem( rFont.GetEscapement(), rFont.GetPropr(), EE_CHAR_ESCAPEMENT ) ); rSet.Put( SvxWeightItem( rFont.GetWeight(), EE_CHAR_WEIGHT ) ); - rSet.Put( SvxColorItem( rFont.GetColor(), EE_CHAR_COLOR ) ); - rSet.Put( SvxColorItem( rFont.GetFillColor(), EE_CHAR_BKGCOLOR ) ); + rSet.Put( SvxColorItem( rFont.GetColor(), ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR ) ); + rSet.Put( SvxColorItem( rFont.GetFillColor(), ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_BKGCOLOR ) ); rSet.Put( SvxUnderlineItem( rFont.GetUnderline(), EE_CHAR_UNDERLINE ) ); rSet.Put( SvxOverlineItem( rFont.GetOverline(), EE_CHAR_OVERLINE ) ); rSet.Put( SvxCrossedOutItem( rFont.GetStrikeout(), EE_CHAR_STRIKEOUT ) ); diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx index 088e2b7d0dbd..9848f8bcb886 100644 --- a/editeng/source/items/textitem.cxx +++ b/editeng/source/items/textitem.cxx @@ -1321,30 +1321,14 @@ bool ThemeColorData::operator==(const ThemeColorData &rOther) const return true; else return mnThemeColorIndex == rOther.mnThemeColorIndex - && mnVirtualThemeColorSetIndex == rOther.mnVirtualThemeColorSetIndex + // TODO: && mpVirtualThemeColorSet == rOther.mpVirtualThemeColorSet && mnTintShade == rOther.mnTintShade; } std::optional ThemeColorData::getThemeColorIfNeedsUpdate() const { - // HACK: after getting rid of SfxObjectShell::Current() should be - // able to get rid of mnContainerIndex - if (mnThemeColorIndex != -1 && mnVirtualThemeColorSetIndex != -1) + if (mnThemeColorIndex != -1) { - // HACK: try to get the pointer to the container.. if it's not there - // We won't need this after figuring out a better way of interacting with SfxObjectShell - if(mpVirtualThemeColorSet.expired()) - { - if (SfxObjectShell* pObjShell = SfxObjectShell::Current()) - { - if (const SfxColorSetListItem* pColorSetItem = pObjShell->GetItem(SID_COLOR_SETS)) - { - ColorSets& rColorSets = pColorSetItem->GetSfxColorSetList(); - mpVirtualThemeColorSet = rColorSets.getVirtualColorSet(mnVirtualThemeColorSetIndex); - } - } - } - if (auto pVirtualThemeColorSet = mpVirtualThemeColorSet.lock()) { if ( auto pColorSet = pVirtualThemeColorSet->getColorSetPtr().lock() ) @@ -1407,36 +1391,18 @@ void ThemeColorData::RecalculateOnNextGet() void ThemeColorData::setVirtualThemeColorSet(sal_Int32 nVirtualThemeColorSetIndex) { - // HACK: - mnVirtualThemeColorSetIndex = nVirtualThemeColorSetIndex; - return; - - // After swapping out SfxObjectShell::Current() with something reasonable - // this should work: - if (SfxObjectShell* pObjShell = SfxObjectShell::Current()) + if (mpColorSets) { - if (const SfxColorSetListItem* pColorSetItem = pObjShell->GetItem(SID_COLOR_SETS)) - { - ColorSets& rColorSets = pColorSetItem->GetSfxColorSetList(); - mpVirtualThemeColorSet = rColorSets.getVirtualColorSet(nVirtualThemeColorSetIndex); - } + mpVirtualThemeColorSet = mpColorSets->getVirtualColorSet(nVirtualThemeColorSetIndex); } } sal_Int32 ThemeColorData::getVirtualThemeColorSetIndex() const { - // HACK: - return mnVirtualThemeColorSetIndex; - - // After swapping out SfxObjectShell::Current() with something reasonable - // this should work: - if (SfxObjectShell* pObjShell = SfxObjectShell::Current()) - { - if (const SfxColorSetListItem* pColorSetItem = pObjShell->GetItem(SID_COLOR_SETS)) - { - return pColorSetItem->GetSfxColorSetList().getVirtualColorSetIndex(mpVirtualThemeColorSet); - } - } + if (mpColorSets) + return mpColorSets->getVirtualColorSetIndex(mpVirtualThemeColorSet); + else + return -1; } // class SvxColorItem ---------------------------------------------------- @@ -1447,10 +1413,17 @@ SvxColorItem::SvxColorItem( const sal_uInt16 nId ) : { } -SvxColorItem::SvxColorItem( const Color& rCol, const sal_uInt16 nId ) : +SvxColorItem::SvxColorItem(const Color& rCol, const sal_uInt16 nId) + : SfxPoolItem(nId) + , mColor(rCol) + , maThemeColorData() +{ +} + +SvxColorItem::SvxColorItem( const Color& rCol, const ColorSets* pColorSets, const sal_uInt16 nId ) : SfxPoolItem( nId ), mColor( rCol ), - maThemeColorData() + maThemeColorData( pColorSets ) { } diff --git a/editeng/source/rtf/rtfitem.cxx b/editeng/source/rtf/rtfitem.cxx index b6e0a93adee6..719176de28c0 100644 --- a/editeng/source/rtf/rtfitem.cxx +++ b/editeng/source/rtf/rtfitem.cxx @@ -924,8 +924,9 @@ ATTR_SETOVERLINE: case RTF_CF: if( aPlainMap.nColor ) { - pSet->Put( SvxColorItem( GetColor( sal_uInt16(nTokenValue) ), - aPlainMap.nColor )); + pSet->Put(SvxColorItem(GetColor(sal_uInt16(nTokenValue)), + ColorSets::getColorSetsFromItemSet(*pSet), + aPlainMap.nColor)); } break; //#i12501# While cb is clearly documented in the rtf spec, word diff --git a/extensions/source/propctrlr/fontdialog.cxx b/extensions/source/propctrlr/fontdialog.cxx index 0e4b11be2896..b50c28e93d32 100644 --- a/extensions/source/propctrlr/fontdialog.cxx +++ b/extensions/source/propctrlr/fontdialog.cxx @@ -235,7 +235,7 @@ namespace pcr SvxUnderlineItem aUnderlineItem(eUnderline,CFID_UNDERLINE); aUnderlineItem.SetColor(Color(ColorTransparency, nTextLineColor)); - SvxColorItem aSvxColorItem(Color(ColorTransparency, nColor32),CFID_CHARCOLOR); + SvxColorItem aSvxColorItem(Color(ColorTransparency, nColor32), ColorSets::getColorSetsFromItemSet(*_pSet), CFID_CHARCOLOR); SvxLanguageItem aLanguageItem(Application::GetSettings().GetUILanguageTag().getLanguageType(), CFID_LANGUAGE); // the 2 CJK props diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index f7ef3675a03d..ff39d8a9ffff 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -5756,14 +5756,14 @@ void PPTPortionObj::ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, T break; default: break; } - rSet.Put( SvxColorItem( aDefColor, EE_CHAR_COLOR ) ); + rSet.Put( SvxColorItem( aDefColor, ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR ) ); } else { if ( GetAttrib( PPT_CharAttr_FontColor, nVal, nDestinationInstance ) ) // text color (4Byte-Arg) { Color aCol( rManager.MSO_TEXT_CLR_ToColor( nVal ) ); - rSet.Put( SvxColorItem( aCol, EE_CHAR_COLOR ) ); + rSet.Put(SvxColorItem(aCol, ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR)); if ( nDestinationInstance == TSS_Type::Unknown ) mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ mnDepth ].mnFontColorInStyleSheet = aCol; } @@ -5772,7 +5772,7 @@ void PPTPortionObj::ApplyTo( SfxItemSet& rSet, SdrPowerPointImport& rManager, T Color aCol( rManager.MSO_TEXT_CLR_ToColor( nVal ) ); Color& aColorInSheet = mrStyleSheet.mpCharSheet[ mnInstance ]->maCharLevel[ mnDepth ].mnFontColorInStyleSheet; if ( aColorInSheet != aCol ) - rSet.Put( SvxColorItem( aCol, EE_CHAR_COLOR ) ); + rSet.Put( SvxColorItem( aCol, ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR ) ); } } diff --git a/include/editeng/colritem.hxx b/include/editeng/colritem.hxx index fe300045598f..75d5ef480c42 100644 --- a/include/editeng/colritem.hxx +++ b/include/editeng/colritem.hxx @@ -27,7 +27,8 @@ #include -#define VERSION_USEAUTOCOLOR 1 +#define VERSION_USEAUTOCOLOR 1 + /** ThemeColorData holds theme color related data of a color item eg. SvxColorItem @@ -35,6 +36,8 @@ class ThemeColorData { public: + ThemeColorData() = default; + ThemeColorData(const ColorSets* pColorSets) : mpColorSets(pColorSets){} bool operator==(const ThemeColorData& rOther) const; /** Calculates and returns the theme color from current ThemeColorData @@ -77,14 +80,7 @@ private: // mutable since marked as false after recalculation in getThemeColorIfNeedsUpdate mutable bool mbRecalculateColor = true; - // HACK: VirtualColorSet index - // should be able to remove this after removing SfxObjectShell::Current() - // from the themecolordata code - sal_Int32 mnVirtualThemeColorSetIndex = -1; - - - // HACK: mutable here until I fix the SfxObjectShell interactions.. - mutable std::weak_ptr mpVirtualThemeColorSet = std::weak_ptr(); + std::weak_ptr mpVirtualThemeColorSet = std::weak_ptr(); }; /** SvxColorItem item describes a color. @@ -105,6 +101,7 @@ public: explicit SvxColorItem(const sal_uInt16 nId); SvxColorItem(const Color& aColor, const sal_uInt16 nId); + SvxColorItem(const Color& aColor, const ColorSets* pColorSets, const sal_uInt16 nId); virtual ~SvxColorItem() override; // "pure virtual Methods" from SfxPoolItem diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx index 53543cf178d2..88ce7700d654 100644 --- a/include/editeng/editeng.hxx +++ b/include/editeng/editeng.hxx @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -417,6 +418,8 @@ public: void SetEditTextObjectPool( SfxItemPool* pPool ); SfxItemPool* GetEditTextObjectPool() const; + ColorSets* GetColorSetsPtr() const; + void SetStyleSheetPool( SfxStyleSheetPool* pSPool ); SfxStyleSheetPool* GetStyleSheetPool(); diff --git a/include/sfx2/ColorSets.hxx b/include/sfx2/ColorSets.hxx index 1f0cb6312c75..6b6735479c67 100644 --- a/include/sfx2/ColorSets.hxx +++ b/include/sfx2/ColorSets.hxx @@ -16,9 +16,13 @@ #include #include #include +#include #include +#include #include +class SfxColorSetListItem; + class ColorSet { OUString maColorSetName; @@ -83,16 +87,18 @@ public: return maColorSets.size() - 1; } - std::shared_ptr& getVirtualColorSet(int nVirtualColorSetIndex) + const std::shared_ptr& getVirtualColorSet(int nVirtualColorSetIndex) const { + // HACK: dont forget to change this... :) return maVirtualThemeColorSets[nVirtualColorSetIndex]; } - sal_Int32 getVirtualColorSetIndex(const std::weak_ptr& pVirtualColorSet) + sal_Int32 + getVirtualColorSetIndex(const std::weak_ptr& pVirtualColorSet) const { if (auto aIt = std::find_if( maVirtualThemeColorSets.begin(), maVirtualThemeColorSets.end(), - [pVirtualColorSet](std::shared_ptr& pVirtualColorSet_) { + [pVirtualColorSet](const std::shared_ptr& pVirtualColorSet_) { return pVirtualColorSet_.get() == pVirtualColorSet.lock().get(); }); aIt != maVirtualThemeColorSets.end()) @@ -108,6 +114,8 @@ public: std::make_shared(getColorSetPtr(nIndexColorSetToReference))); return maVirtualThemeColorSets.size() - 1; } + + static ColorSets* getColorSetsFromItemSet(const SfxItemSet& rSet); }; class SFX2_DLLPUBLIC SfxColorSetListItem final : public SfxPoolItem diff --git a/include/svx/svx3ditems.hxx b/include/svx/svx3ditems.hxx index 7cb5eae6e399..190eb3a83245 100644 --- a/include/svx/svx3ditems.hxx +++ b/include/svx/svx3ditems.hxx @@ -105,12 +105,12 @@ inline SfxBoolItem makeSvx3DShadow3DItem(bool bVal) { return SfxBoolItem(SDRATTR_3DOBJ_SHADOW_3D, bVal); } -inline SvxColorItem makeSvx3DMaterialEmissionItem(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_EMISSION); +inline SvxColorItem makeSvx3DMaterialEmissionItem(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DOBJ_MAT_EMISSION); } -inline SvxColorItem makeSvx3DMaterialSpecularItem(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DOBJ_MAT_SPECULAR); +inline SvxColorItem makeSvx3DMaterialSpecularItem(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DOBJ_MAT_SPECULAR); } inline SfxUInt16Item makeSvx3DMaterialSpecularIntensityItem(sal_uInt16 nVal) { @@ -164,40 +164,40 @@ inline SfxBoolItem makeSvx3DTwoSidedLightingItem(bool bVal) { return SfxBoolItem(SDRATTR_3DSCENE_TWO_SIDED_LIGHTING, bVal); } -inline SvxColorItem makeSvx3DLightcolor1Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_1); +inline SvxColorItem makeSvx3DLightcolor1Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_1); } -inline SvxColorItem makeSvx3DLightcolor2Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_2); +inline SvxColorItem makeSvx3DLightcolor2Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_2); } -inline SvxColorItem makeSvx3DLightcolor3Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_3); +inline SvxColorItem makeSvx3DLightcolor3Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_3); } -inline SvxColorItem makeSvx3DLightcolor4Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_4); +inline SvxColorItem makeSvx3DLightcolor4Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_4); } -inline SvxColorItem makeSvx3DLightcolor5Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_5); +inline SvxColorItem makeSvx3DLightcolor5Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_5); } -inline SvxColorItem makeSvx3DLightcolor6Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_6); +inline SvxColorItem makeSvx3DLightcolor6Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_6); } -inline SvxColorItem makeSvx3DLightcolor7Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_7); +inline SvxColorItem makeSvx3DLightcolor7Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_7); } -inline SvxColorItem makeSvx3DLightcolor8Item(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_LIGHTCOLOR_8); +inline SvxColorItem makeSvx3DLightcolor8Item(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_LIGHTCOLOR_8); } -inline SvxColorItem makeSvx3DAmbientcolorItem(const Color& rCol) { - return SvxColorItem(rCol, SDRATTR_3DSCENE_AMBIENTCOLOR); +inline SvxColorItem makeSvx3DAmbientcolorItem(const Color& rCol, const SfxItemSet& rSet) { + return SvxColorItem(rCol, ColorSets::getColorSetsFromItemSet(rSet), SDRATTR_3DSCENE_AMBIENTCOLOR); } inline SfxBoolItem makeSvx3DLightOnOff1Item(bool bVal) { diff --git a/reportdesign/source/ui/misc/UITools.cxx b/reportdesign/source/ui/misc/UITools.cxx index 6be0594813f6..4ab27ae03928 100644 --- a/reportdesign/source/ui/misc/UITools.cxx +++ b/reportdesign/source/ui/misc/UITools.cxx @@ -348,7 +348,7 @@ namespace _rItemSet.Put(SvxKerningItem(_rxReportControlFormat->getCharKerning(),ITEMID_KERNING)); _rItemSet.Put(SvxEmphasisMarkItem(static_cast(_rxReportControlFormat->getCharEmphasis()),ITEMID_EMPHASISMARK)); _rItemSet.Put(SvxCharReliefItem(static_cast(_rxReportControlFormat->getCharRelief()),ITEMID_CHARRELIEF)); - _rItemSet.Put(SvxColorItem(::Color(ColorTransparency, _rxReportControlFormat->getCharColor()),ITEMID_COLOR)); + _rItemSet.Put(SvxColorItem(::Color(ColorTransparency, _rxReportControlFormat->getCharColor()), ColorSets::getColorSetsFromItemSet(_rItemSet), ITEMID_COLOR)); _rItemSet.Put(SvxCharRotateItem(Degree10(_rxReportControlFormat->getCharRotation()),false,ITEMID_CHARROTATE)); _rItemSet.Put(SvxCharScaleWidthItem(_rxReportControlFormat->getCharScaleWidth(),ITEMID_CHARSCALE_W)); diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx index 31c0aae3dd71..d378eac54d4a 100644 --- a/sc/qa/unit/subsequent_export-test.cxx +++ b/sc/qa/unit/subsequent_export-test.cxx @@ -1532,7 +1532,7 @@ void setAttribute( ScFieldEditEngine& rEE, sal_Int32 nPara, sal_Int32 nStart, sa break; case EE_CHAR_COLOR: { - SvxColorItem aItem(nColor, nType); + SvxColorItem aItem(nColor, ColorSets::getColorSetsFromItemSet(aItemSet), nType); aItemSet.Put(aItem); rEE.QuickSetAttribs(aItemSet, aSel); } @@ -2039,7 +2039,7 @@ void ScExportTest::testRichTextExportODS() CPPUNIT_ASSERT_MESSAGE("Incorrect B9 value.", aCheckFunc.checkB9(pEditText)); ScPatternAttr aCellFontColor(rDoc3.GetPool()); - aCellFontColor.GetItemSet().Put(SvxColorItem(COL_BLUE, ATTR_FONT_COLOR)); + aCellFontColor.GetItemSet().Put(SvxColorItem(COL_BLUE, ColorSets::getColorSetsFromItemSet(aCellFontColor.GetItemSet()), ATTR_FONT_COLOR)); // Set font color of B10 to blue. rDoc3.ApplyPattern(1, 9, 0, aCellFontColor); pEE->Clear(); diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx index 995219fc710a..a8a5cd56a78f 100644 --- a/sc/source/filter/excel/xistyle.cxx +++ b/sc/source/filter/excel/xistyle.cxx @@ -366,7 +366,7 @@ void XclImpFont::FillToItemSet( SfxItemSet& rItemSet, XclFontItemType eType, boo // Font color - pass AUTO_COL to item if( mbColorUsed ) - PUTITEM( SvxColorItem( maData.maColor, ATTR_FONT_COLOR ), ATTR_FONT_COLOR, EE_CHAR_COLOR ); + PUTITEM( SvxColorItem( maData.maColor, ColorSets::getColorSetsFromItemSet(rItemSet), ATTR_FONT_COLOR ), ATTR_FONT_COLOR, EE_CHAR_COLOR ); // Font weight (for all script types) if( mbWeightUsed ) diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx index e320269352ed..ba9761336bc7 100644 --- a/sc/source/filter/html/htmlpars.cxx +++ b/sc/source/filter/html/htmlpars.cxx @@ -1438,7 +1438,7 @@ void ScHTMLLayoutParser::FontOn( HtmlImportInfo* pInfo ) { Color aColor; rOption.GetColor( aColor ); - mxActEntry->aItemSet.Put( SvxColorItem( aColor, ATTR_FONT_COLOR ) ); + mxActEntry->aItemSet.Put( SvxColorItem( aColor, ColorSets::getColorSetsFromItemSet(mxActEntry->aItemSet), ATTR_FONT_COLOR ) ); } break; default: break; diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx index b0c574f09378..7e6dce759fc6 100644 --- a/sc/source/filter/oox/stylesbuffer.cxx +++ b/sc/source/filter/oox/stylesbuffer.cxx @@ -929,7 +929,7 @@ void Font::fillToItemSet( SfxItemSet& rItemSet, bool bEditEngineText, bool bSkip // character color if( maUsedFlags.mbColorUsed ) { - ScfTools::PutItem( rItemSet,SvxColorItem( maApiData.mnColor, bEditEngineText ? static_cast(EE_CHAR_COLOR) : ATTR_FONT_COLOR), bSkipPoolDefs ); + ScfTools::PutItem( rItemSet,SvxColorItem( maApiData.mnColor, ColorSets::getColorSetsFromItemSet(rItemSet), bEditEngineText ? static_cast(EE_CHAR_COLOR) : ATTR_FONT_COLOR), bSkipPoolDefs ); } // underline style if( maUsedFlags.mbUnderlineUsed ) diff --git a/sc/source/filter/orcus/interface.cxx b/sc/source/filter/orcus/interface.cxx index b996449c8218..715a4b2899d1 100644 --- a/sc/source/filter/orcus/interface.cxx +++ b/sc/source/filter/orcus/interface.cxx @@ -1365,7 +1365,7 @@ void ScOrcusStyles::font::applyToItemSet(SfxItemSet& rSet) const FontWeight eWeight = mbBold ? WEIGHT_BOLD : WEIGHT_NORMAL; rSet.Put(SvxWeightItem(eWeight, ATTR_FONT_WEIGHT)); - rSet.Put( SvxColorItem(maColor, ATTR_FONT_COLOR)); + rSet.Put( SvxColorItem(maColor, ColorSets::getColorSetsFromItemSet(rSet), ATTR_FONT_COLOR)); if(!maName.isEmpty()) rSet.Put( SvxFontItem( FAMILY_DONTKNOW, maName, maName, PITCH_DONTKNOW, RTL_TEXTENCODING_DONTKNOW, ATTR_FONT )); diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index a8bf4a39e8f9..4e1affc638ac 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -410,7 +410,7 @@ handle_r1c1: ESelection aSel( 0, nStart, 0, nPos ); SfxItemSet aSet( mpEditEngine->GetEmptyItemSet() ); - aSet.Put( SvxColorItem( nColor, EE_CHAR_COLOR ) ); + aSet.Put( SvxColorItem( nColor, ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) ); mpEditEngine->QuickSetAttribs( aSet, aSel ); ++nCount; } @@ -610,7 +610,7 @@ void ScInputHandler::UpdateRange( sal_uInt16 nIndex, const ScRange& rNew ) lcl_Replace( pTopView, aNewStr, aOldSel ); lcl_Replace( pTableView, aNewStr, aOldSel ); - aSet.Put( SvxColorItem( nNewColor, EE_CHAR_COLOR ) ); + aSet.Put( SvxColorItem( nNewColor, ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) ); mpEditEngine->QuickSetAttribs( aSet, aOldSel ); bInRangeUpdate = true; diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx index f51e8f49290f..027ce966711a 100644 --- a/sc/source/ui/view/editsh.cxx +++ b/sc/source/ui/view/editsh.cxx @@ -978,7 +978,7 @@ void ScEditShell::ExecuteAttr(SfxRequest& rReq) else aColor = Color( ColorTransparency, sColor.toInt32( 16 ) ); - aSet.Put( SvxColorItem( aColor, EE_CHAR_COLOR ) ); + aSet.Put( SvxColorItem( aColor, ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) ); } else { diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx index a418f3185c8a..495b3088bc51 100644 --- a/sc/source/ui/view/formatsh.cxx +++ b/sc/source/ui/view/formatsh.cxx @@ -2066,7 +2066,7 @@ void ScFormatShell::GetAttrState( SfxItemSet& rSet ) { case SID_BACKGROUND_COLOR: { - rSet.Put( SvxColorItem( rBrushItem.GetColor(), SID_BACKGROUND_COLOR ) ); + rSet.Put( SvxColorItem( rBrushItem.GetColor(), ColorSets::getColorSetsFromItemSet(rSet), SID_BACKGROUND_COLOR ) ); if(SfxItemState::DONTCARE == rAttrSet.GetItemState(ATTR_BACKGROUND)) { rSet.InvalidateItem(SID_BACKGROUND_COLOR); @@ -2206,16 +2206,16 @@ void ScFormatShell::GetAttrState( SfxItemSet& rSet ) if(bColDisable) // if different lines have different colors { aCol = COL_TRANSPARENT; - rSet.Put( SvxColorItem(aCol, SID_FRAME_LINECOLOR ) ); + rSet.Put( SvxColorItem(aCol, ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) ); rSet.InvalidateItem(SID_FRAME_LINECOLOR); } else if (!bCol) // if no line available { aCol = COL_AUTO; - rSet.Put( SvxColorItem(aCol, SID_FRAME_LINECOLOR ) ); + rSet.Put( SvxColorItem(aCol, ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) ); } else - rSet.Put( SvxColorItem(aCol, SID_FRAME_LINECOLOR ) ); + rSet.Put( SvxColorItem(aCol, ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) ); } else // if( nWhich == SID_FRAME_LINESTYLE) { diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx index 2d45fa62eaa7..e040d1a3278b 100644 --- a/sc/source/ui/view/output2.cxx +++ b/sc/source/ui/view/output2.cxx @@ -916,7 +916,7 @@ static void lcl_SetEditColor( EditEngine& rEngine, const Color& rColor ) { ESelection aSel( 0, 0, rEngine.GetParagraphCount(), 0 ); SfxItemSet aSet( rEngine.GetEmptyItemSet() ); - aSet.Put( SvxColorItem( rColor, EE_CHAR_COLOR ) ); + aSet.Put( SvxColorItem( rColor, ColorSets::getColorSetsFromItemSet(aSet), EE_CHAR_COLOR ) ); rEngine.QuickSetAttribs( aSet, aSel ); // function is called with update mode set to FALSE } diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx index 57b0bf6696d1..7e3ecc332edb 100644 --- a/sc/source/ui/view/tabvwshf.cxx +++ b/sc/source/ui/view/tabvwshf.cxx @@ -992,7 +992,7 @@ void ScTabViewShell::GetStateTable( SfxItemSet& rSet ) case FID_TAB_SET_TAB_BG_COLOR: { Color aColor = rDoc.GetTabBgColor( nTab ); - rSet.Put( SvxColorItem( aColor, nWhich ) ); + rSet.Put( SvxColorItem( aColor, ColorSets::getColorSetsFromItemSet(rSet), nWhich ) ); } break; diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx index f796823fc426..0bdbd4b44968 100644 --- a/sd/qa/unit/dialogs-test.cxx +++ b/sd/qa/unit/dialogs-test.cxx @@ -502,7 +502,7 @@ VclPtr SdDialogsTest::createDialogByID(sal_uInt32 nID) aSet.Put(SfxUInt16Item(ATTR_ANIMATION_TEXTEFFECT, sal_uInt16(presentation::AnimationEffect_NONE))); aSet.InvalidateItem(ATTR_ANIMATION_SPEED); aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, false)); - aSet.Put(SvxColorItem(COL_LIGHTGRAY, ATTR_ANIMATION_COLOR)); + aSet.Put(SvxColorItem(COL_LIGHTGRAY, ColorSets::getColorSetsFromItemSet(aSet), ATTR_ANIMATION_COLOR)); aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, false)); aSet.Put(SfxBoolItem(ATTR_ANIMATION_SOUNDON, false)); aSet.InvalidateItem(ATTR_ANIMATION_SOUNDFILE); diff --git a/sd/source/core/drawdoc4.cxx b/sd/source/core/drawdoc4.cxx index e078afc58b54..f18ad8ae065b 100644 --- a/sd/source/core/drawdoc4.cxx +++ b/sd/source/core/drawdoc4.cxx @@ -215,7 +215,7 @@ void SdDrawDocument::CreateLayoutTemplates() rISet.Put(SvxCaseMapItem(SvxCaseMap::NotMapped, EE_CHAR_CASEMAP )); rISet.Put(SvxEmphasisMarkItem(FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK)); rISet.Put(SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF)); - rISet.Put(SvxColorItem(COL_AUTO, EE_CHAR_COLOR )); + rISet.Put(SvxColorItem(COL_AUTO, ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // Paragraph attributes (Edit Engine) rISet.Put(SvxLRSpaceItem(EE_PARA_LRSPACE)); @@ -443,7 +443,7 @@ void SdDrawDocument::CreateLayoutTemplates() aFillGradient.SetName( aName ); aFillGradient.SetGradientValue(aGradient); pISet->Put( aFillGradient ); - pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR )); // font white + pISet->Put( SvxColorItem(COL_WHITE, ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font white } // Graphic > Shapes > Filled > Green { @@ -459,7 +459,7 @@ void SdDrawDocument::CreateLayoutTemplates() aFillGradient.SetGradientValue(aGradient); pISet->Put( aFillGradient ); pISet->Put( aSvxFontItem ); // font name - pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR )); // font white + pISet->Put( SvxColorItem(COL_WHITE, ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font white } // Graphic > Shapes > Filled > Red { @@ -474,7 +474,7 @@ void SdDrawDocument::CreateLayoutTemplates() aFillGradient.SetName( aName ); aFillGradient.SetGradientValue(aGradient); pISet->Put( aFillGradient ); - pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR )); // font white + pISet->Put( SvxColorItem(COL_WHITE, ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font white } // Graphic > Shapes > Filled > Yellow { @@ -489,7 +489,7 @@ void SdDrawDocument::CreateLayoutTemplates() aFillGradient.SetName( aName ); aFillGradient.SetGradientValue(aGradient); pISet->Put( aFillGradient ); - pISet->Put( SvxColorItem(COL_WHITE, EE_CHAR_COLOR )); // font white + pISet->Put( SvxColorItem(COL_WHITE, ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font white } // Graphic > Shapes > Outlines OUString aOutlineName(SdResId(STR_POOLSHEET_OUTLINE)); @@ -512,7 +512,7 @@ void SdDrawDocument::CreateLayoutTemplates() pSheet->SetHelpId( aHelpFile, HID_POOLSHEET_OUTLINE_BLUE ); pISet = &pSheet->GetItemSet(); pISet->Put( XLineColorItem(OUString(), Color(0x00355269)) ); // dark blue 2 - pISet->Put( SvxColorItem(Color(0x00355269), EE_CHAR_COLOR )); // font color + pISet->Put( SvxColorItem(Color(0x00355269), ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font color } // Graphic > Shapes > Outlines > Green { @@ -522,7 +522,7 @@ void SdDrawDocument::CreateLayoutTemplates() pSheet->SetHelpId( aHelpFile, HID_POOLSHEET_OUTLINE_GREEN ); pISet = &pSheet->GetItemSet(); pISet->Put( XLineColorItem(OUString(), Color(0x00127622)) ); // dark green 2 - pISet->Put( SvxColorItem(Color(0x00127622), EE_CHAR_COLOR )); // font color + pISet->Put( SvxColorItem(Color(0x00127622), ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font color } // Graphic > Shapes > Outlines > Red { @@ -532,7 +532,7 @@ void SdDrawDocument::CreateLayoutTemplates() pSheet->SetHelpId( aHelpFile, HID_POOLSHEET_OUTLINE_RED ); pISet = &pSheet->GetItemSet(); pISet->Put( XLineColorItem(OUString(), Color(0x00c9211e)) ); // dark red 2 - pISet->Put( SvxColorItem(Color(0x00c9211e), EE_CHAR_COLOR )); // font color + pISet->Put( SvxColorItem(Color(0x00c9211e), ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font color } // Graphic > Shapes > Outlines > Yellow { @@ -543,7 +543,7 @@ void SdDrawDocument::CreateLayoutTemplates() pISet = &pSheet->GetItemSet(); pISet->Put( XLineStyleItem(drawing::LineStyle_SOLID)); pISet->Put( XLineColorItem(OUString(), Color(0x00b47804)) ); // dark gold 2 - pISet->Put( SvxColorItem(Color(0x00b47804), EE_CHAR_COLOR )); // font color + pISet->Put( SvxColorItem(Color(0x00b47804), ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // font color } // Graphic > Lines OUString aLinesName; @@ -670,7 +670,7 @@ void SdDrawDocument::CreateDefaultCellStyles() rISet.Put( SvxFontHeightItem( 635, 100, EE_CHAR_FONTHEIGHT_CJK ) ); // 18 pt rISet.Put( SvxFontHeightItem( convertFontHeightToCTL( 635 ), 100, EE_CHAR_FONTHEIGHT_CTL ) ); // 18 pt - rISet.Put(SvxColorItem(COL_AUTO, EE_CHAR_COLOR )); + rISet.Put(SvxColorItem(COL_AUTO, ColorSets::getColorSetsFromItemSet(rISet), EE_CHAR_COLOR )); // Paragraph attributes (Edit Engine) rISet.Put(SvxLRSpaceItem(EE_PARA_LRSPACE)); diff --git a/sd/source/core/stlpool.cxx b/sd/source/core/stlpool.cxx index d15aaf632b04..9101f6caeccd 100644 --- a/sd/source/core/stlpool.cxx +++ b/sd/source/core/stlpool.cxx @@ -238,8 +238,8 @@ void SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName, rSet.Put( SvxContourItem(false, EE_CHAR_OUTLINE ) ); rSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK ) ); rSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF) ); - rSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_COLOR) ); - rSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR ) ); + rSet.Put( SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_COLOR) ); + rSet.Put( SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rSet), EE_CHAR_BKGCOLOR ) ); rSet.Put( XLineStyleItem(css::drawing::LineStyle_NONE) ); rSet.Put( XFillStyleItem(drawing::FillStyle_NONE) ); rSet.Put( SdrTextFitToSizeTypeItem(drawing::TextFitToSizeType_AUTOFIT) ); @@ -353,8 +353,8 @@ void SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName, rTitleSet.Put(SvxContourItem(false, EE_CHAR_OUTLINE )); rTitleSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK ) ); rTitleSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF ) ); - rTitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_COLOR )); - rTitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR )); + rTitleSet.Put(SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rTitleSet), EE_CHAR_COLOR )); + rTitleSet.Put(SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rTitleSet), EE_CHAR_BKGCOLOR )); rTitleSet.Put(SvxAdjustItem(SvxAdjust::Center, EE_PARA_JUST )); rTitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) ); // #i16874# enable kerning by default but only for new documents @@ -399,8 +399,8 @@ void SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName, rSubtitleSet.Put(SvxContourItem(false, EE_CHAR_OUTLINE )); rSubtitleSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK ) ); rSubtitleSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF ) ); - rSubtitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_COLOR )); - rSubtitleSet.Put(SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR )); + rSubtitleSet.Put(SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rSubtitleSet), EE_CHAR_COLOR )); + rSubtitleSet.Put(SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rSubtitleSet), EE_CHAR_BKGCOLOR)); rSubtitleSet.Put(SvxAdjustItem(SvxAdjust::Center, EE_PARA_JUST )); rSubtitleSet.Put( SdrTextVertAdjustItem( SDRTEXTVERTADJUST_CENTER ) ); // #i16874# enable kerning by default but only for new documents @@ -448,8 +448,8 @@ void SdStyleSheetPool::CreateLayoutStyleSheets(std::u16string_view rLayoutName, rNotesSet.Put( SvxContourItem(false, EE_CHAR_OUTLINE ) ); rNotesSet.Put( SvxEmphasisMarkItem(FontEmphasisMark::NONE, EE_CHAR_EMPHASISMARK ) ); rNotesSet.Put( SvxCharReliefItem(FontRelief::NONE, EE_CHAR_RELIEF) ); - rNotesSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_COLOR ) ); - rNotesSet.Put( SvxColorItem( COL_AUTO, EE_CHAR_BKGCOLOR ) ); + rNotesSet.Put( SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rNotesSet), EE_CHAR_COLOR ) ); + rNotesSet.Put( SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(rNotesSet), EE_CHAR_BKGCOLOR)); rNotesSet.Put( SvxLRSpaceItem( 0, 0, 600, -600, EE_PARA_LRSPACE ) ); // #i16874# enable kerning by default but only for new documents rNotesSet.Put( SvxAutoKernItem( true, EE_CHAR_PAIRKERNING ) ); diff --git a/sd/source/ui/func/fuchar.cxx b/sd/source/ui/func/fuchar.cxx index a1c69e25b041..b2981167b888 100644 --- a/sd/source/ui/func/fuchar.cxx +++ b/sd/source/ui/func/fuchar.cxx @@ -85,7 +85,7 @@ void FuChar::DoExecute( SfxRequest& rReq ) if ( pBrushItem ) { - SvxColorItem aBackColorItem( pBrushItem->GetColor(), EE_CHAR_BKGCOLOR ); + SvxColorItem aBackColorItem( pBrushItem->GetColor(), ColorSets::getColorSetsFromItemSet(aOtherSet), EE_CHAR_BKGCOLOR ); aOtherSet.ClearItem( SID_ATTR_BRUSH_CHAR ); aOtherSet.Put( aBackColorItem ); } diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx index d6b7fa49115d..8cb9045a01a7 100644 --- a/sd/source/ui/func/fuoaprms.cxx +++ b/sd/source/ui/func/fuoaprms.cxx @@ -373,11 +373,11 @@ void FuObjectAnimationParameters::DoExecute( SfxRequest& rReq ) aSet.Put(SfxBoolItem(ATTR_ANIMATION_FADEOUT, false)); if (nFadeColorSet == ATTR_SET) - aSet.Put(SvxColorItem(aFadeColor, ATTR_ANIMATION_COLOR)); + aSet.Put(SvxColorItem(aFadeColor, ColorSets::getColorSetsFromItemSet(aSet), ATTR_ANIMATION_COLOR)); else if (nFadeColorSet == ATTR_MIXED) aSet.InvalidateItem(ATTR_ANIMATION_COLOR); else - aSet.Put(SvxColorItem(COL_LIGHTGRAY, ATTR_ANIMATION_COLOR)); + aSet.Put(SvxColorItem(COL_LIGHTGRAY, ColorSets::getColorSetsFromItemSet(aSet), ATTR_ANIMATION_COLOR)); if (nInvisibleSet == ATTR_SET) aSet.Put(SfxBoolItem(ATTR_ANIMATION_INVISIBLE, bInvisible)); diff --git a/sd/source/ui/func/futempl.cxx b/sd/source/ui/func/futempl.cxx index a29fb21ab35c..f3ac1150196c 100644 --- a/sd/source/ui/func/futempl.cxx +++ b/sd/source/ui/func/futempl.cxx @@ -390,7 +390,7 @@ void FuTemplate::DoExecute( SfxRequest& rReq ) if ( pBrushItem ) { - SvxColorItem aBackColorItem(pBrushItem->GetColor(), EE_CHAR_BKGCOLOR); + SvxColorItem aBackColorItem(pBrushItem->GetColor(), ColorSets::getColorSetsFromItemSet(aTempSet), EE_CHAR_BKGCOLOR); aTempSet.ClearItem( EE_CHAR_BKGCOLOR ); aTempSet.Put( aBackColorItem ); } diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx index 8c636345fc5b..e7193e5f2de6 100644 --- a/sd/source/ui/view/drtxtob1.cxx +++ b/sd/source/ui/view/drtxtob1.cxx @@ -88,14 +88,14 @@ namespace { case SID_ATTR_CHAR_COLOR: { - SvxColorItem aColorItem(aColor, EE_CHAR_COLOR); + SvxColorItem aColorItem(aColor, ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_COLOR); pArgs->Put(aColorItem); break; } case SID_ATTR_CHAR_BACK_COLOR: { - SvxColorItem pBackgroundItem(aColor, EE_CHAR_BKGCOLOR); + SvxColorItem pBackgroundItem(aColor, ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_BKGCOLOR); pArgs->Put(pBackgroundItem); break; } diff --git a/sfx2/source/styles/ColorSets.cxx b/sfx2/source/styles/ColorSets.cxx index 96b9370978f7..f721510ae9c0 100644 --- a/sfx2/source/styles/ColorSets.cxx +++ b/sfx2/source/styles/ColorSets.cxx @@ -8,6 +8,7 @@ * */ +#include "sal/log.hxx" #include #include @@ -124,6 +125,18 @@ void ColorSets::setThemeColorSet(std::u16string_view rName) } } +ColorSets* ColorSets::getColorSetsFromItemSet(const SfxItemSet& rSet) +{ + if (const SfxColorSetListItem* const pColorSetListItem = rSet.GetItem(SID_COLOR_SETS)) + { + return &pColorSetListItem->GetSfxColorSetList(); + } + else + { + return nullptr; + } +} + SfxColorSetListItem::SfxColorSetListItem() {} SfxColorSetListItem::SfxColorSetListItem(const ColorSets& rColorSets, sal_uInt16 nW) diff --git a/svx/source/customshapes/EnhancedCustomShape3d.cxx b/svx/source/customshapes/EnhancedCustomShape3d.cxx index 9c933ef9313e..ca07f70392e1 100644 --- a/svx/source/customshapes/EnhancedCustomShape3d.cxx +++ b/svx/source/customshapes/EnhancedCustomShape3d.cxx @@ -681,14 +681,14 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( if ( nAmbientColor > 255 ) nAmbientColor = 255; Color aGlobalAmbientColor( static_cast(nAmbientColor), static_cast(nAmbientColor), static_cast(nAmbientColor) ); - pScene->GetProperties().SetObjectItem( makeSvx3DAmbientcolorItem( aGlobalAmbientColor ) ); + pScene->GetProperties().SetObjectItem( makeSvx3DAmbientcolorItem( aGlobalAmbientColor, pScene->GetMergedItemSet() ) ); sal_uInt8 nSpotLight1 = static_cast( fLightIntensity * 255.0 ); basegfx::B3DVector aSpotLight1( aFirstLightDirection.DirectionX, - ( aFirstLightDirection.DirectionY ), -( aFirstLightDirection.DirectionZ ) ); aSpotLight1.normalize(); pScene->GetProperties().SetObjectItem( makeSvx3DLightOnOff1Item( true ) ); Color aAmbientSpot1Color( nSpotLight1, nSpotLight1, nSpotLight1 ); - pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor1Item( aAmbientSpot1Color ) ); + pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor1Item( aAmbientSpot1Color, pScene->GetMergedItemSet() ) ); pScene->GetProperties().SetObjectItem( makeSvx3DLightDirection1Item( aSpotLight1 ) ); sal_uInt8 nSpotLight2 = static_cast( fLight2Intensity * 255.0 ); @@ -696,14 +696,14 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( aSpotLight2.normalize(); pScene->GetProperties().SetObjectItem( makeSvx3DLightOnOff2Item( true ) ); Color aAmbientSpot2Color( nSpotLight2, nSpotLight2, nSpotLight2 ); - pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor2Item( aAmbientSpot2Color ) ); + pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor2Item( aAmbientSpot2Color, pScene->GetMergedItemSet() ) ); pScene->GetProperties().SetObjectItem( makeSvx3DLightDirection2Item( aSpotLight2 ) ); sal_uInt8 nSpotLight3 = 70; basegfx::B3DVector aSpotLight3( 0.0, 0.0, 1.0 ); pScene->GetProperties().SetObjectItem( makeSvx3DLightOnOff3Item( true ) ); Color aAmbientSpot3Color( nSpotLight3, nSpotLight3, nSpotLight3 ); - pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor3Item( aAmbientSpot3Color ) ); + pScene->GetProperties().SetObjectItem( makeSvx3DLightcolor3Item( aAmbientSpot3Color, pScene->GetMergedItemSet() ) ); pScene->GetProperties().SetObjectItem( makeSvx3DLightDirection3Item( aSpotLight3 ) ); double fSpecular = GetDouble( rGeometryItem, "Specularity", 0 ) / 100; @@ -721,7 +721,7 @@ SdrObject* EnhancedCustomShape3d::Create3DObject( else if ( nIntensity < 0 ) nIntensity = 0; nIntensity = 100 - nIntensity; - pScene->GetProperties().SetObjectItem( makeSvx3DMaterialSpecularItem( aSpecularCol ) ); + pScene->GetProperties().SetObjectItem( makeSvx3DMaterialSpecularItem( aSpecularCol, pScene->GetMergedItemSet() ) ); pScene->GetProperties().SetObjectItem( makeSvx3DMaterialSpecularIntensityItem( static_cast(nIntensity) ) ); pScene->SetLogicRect( diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx index a3bd5f9ce430..579cb8632603 100644 --- a/svx/source/engine3d/float3d.cxx +++ b/svx/source/engine3d/float3d.cxx @@ -1843,7 +1843,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight1->IsNoSelection()) { aColor = m_xLbLight1->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor1Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor1Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_1); @@ -1868,7 +1868,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight2->IsNoSelection()) { aColor = m_xLbLight2->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor2Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor2Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_2); @@ -1892,7 +1892,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight3->IsNoSelection()) { aColor = m_xLbLight3->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor3Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor3Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_3); @@ -1916,7 +1916,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight4->IsNoSelection()) { aColor = m_xLbLight4->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor4Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor4Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_4); @@ -1940,7 +1940,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight5->IsNoSelection()) { aColor = m_xLbLight5->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor5Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor5Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_5); @@ -1964,7 +1964,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight6->IsNoSelection()) { aColor = m_xLbLight6->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor6Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor6Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_6); @@ -1988,7 +1988,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight7->IsNoSelection()) { aColor = m_xLbLight7->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor7Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor7Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_7); @@ -2012,7 +2012,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbLight8->IsNoSelection()) { aColor = m_xLbLight8->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DLightcolor8Item(aColor)); + rAttrs.Put(makeSvx3DLightcolor8Item(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTCOLOR_8); @@ -2036,7 +2036,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbAmbientlight->IsNoSelection()) { aColor = m_xLbAmbientlight->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DAmbientcolorItem(aColor)); + rAttrs.Put(makeSvx3DAmbientcolorItem(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DSCENE_AMBIENTCOLOR); @@ -2123,7 +2123,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbMatEmission->IsNoSelection()) { aColor = m_xLbMatEmission->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DMaterialEmissionItem(aColor)); + rAttrs.Put(makeSvx3DMaterialEmissionItem(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_EMISSION); @@ -2132,7 +2132,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs ) if (!m_xLbMatSpecular->IsNoSelection()) { aColor = m_xLbMatSpecular->GetSelectEntryColor(); - rAttrs.Put(makeSvx3DMaterialSpecularItem(aColor)); + rAttrs.Put(makeSvx3DMaterialSpecularItem(aColor, rAttrs)); } else rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_SPECULAR); @@ -2632,15 +2632,15 @@ void Svx3DWin::ClickLight(const LightButton& rBtn) switch(nLightSource) { - case 0: aLightItemSet.Put(makeSvx3DLightcolor1Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff1Item(bOnOff)); break; - case 1: aLightItemSet.Put(makeSvx3DLightcolor2Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff2Item(bOnOff)); break; - case 2: aLightItemSet.Put(makeSvx3DLightcolor3Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff3Item(bOnOff)); break; - case 3: aLightItemSet.Put(makeSvx3DLightcolor4Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff4Item(bOnOff)); break; - case 4: aLightItemSet.Put(makeSvx3DLightcolor5Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff5Item(bOnOff)); break; - case 5: aLightItemSet.Put(makeSvx3DLightcolor6Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff6Item(bOnOff)); break; - case 6: aLightItemSet.Put(makeSvx3DLightcolor7Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff7Item(bOnOff)); break; + case 0: aLightItemSet.Put(makeSvx3DLightcolor1Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff1Item(bOnOff)); break; + case 1: aLightItemSet.Put(makeSvx3DLightcolor2Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff2Item(bOnOff)); break; + case 2: aLightItemSet.Put(makeSvx3DLightcolor3Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff3Item(bOnOff)); break; + case 3: aLightItemSet.Put(makeSvx3DLightcolor4Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff4Item(bOnOff)); break; + case 4: aLightItemSet.Put(makeSvx3DLightcolor5Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff5Item(bOnOff)); break; + case 5: aLightItemSet.Put(makeSvx3DLightcolor6Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff6Item(bOnOff)); break; + case 6: aLightItemSet.Put(makeSvx3DLightcolor7Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff7Item(bOnOff)); break; default: - case 7: aLightItemSet.Put(makeSvx3DLightcolor8Item(aColor)); aLightItemSet.Put(makeSvx3DLightOnOff8Item(bOnOff)); break; + case 7: aLightItemSet.Put(makeSvx3DLightcolor8Item(aColor, aLightItemSet)); aLightItemSet.Put(makeSvx3DLightOnOff8Item(bOnOff)); break; } m_xCtlLightPreview->GetSvx3DLightControl().Set3DAttributes(aLightItemSet); diff --git a/svx/source/svdraw/svdfmtf.cxx b/svx/source/svdraw/svdfmtf.cxx index c2e43c07d43c..f68a944982dc 100644 --- a/svx/source/svdraw/svdfmtf.cxx +++ b/svx/source/svdraw/svdfmtf.cxx @@ -418,7 +418,7 @@ void ImpSdrGDIMetaFileImport::SetAttributes(SdrObject* pObj, bool bForceTextAttr mpTextAttr->Put(SvxWordLineModeItem(aFnt.IsWordLineMode(), EE_CHAR_WLM)); mpTextAttr->Put(SvxContourItem(aFnt.IsOutline(), EE_CHAR_OUTLINE)); - mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), EE_CHAR_COLOR)); + mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), ColorSets::getColorSetsFromItemSet(*mpTextAttr), EE_CHAR_COLOR)); //... svxfont textitem svditext mbFntDirty = false; } diff --git a/svx/source/svdraw/svdpdf.cxx b/svx/source/svdraw/svdpdf.cxx index adb68732d0cb..a09c357ff7f0 100644 --- a/svx/source/svdraw/svdpdf.cxx +++ b/svx/source/svdraw/svdpdf.cxx @@ -376,7 +376,8 @@ void ImpSdrPdfImport::SetAttributes(SdrObject* pObj, bool bForceTextAttr) mpTextAttr->Put(SvxWordLineModeItem(aFnt.IsWordLineMode(), EE_CHAR_WLM)); mpTextAttr->Put(SvxContourItem(aFnt.IsOutline(), EE_CHAR_OUTLINE)); - mpTextAttr->Put(SvxColorItem(mpVD->GetTextColor(), EE_CHAR_COLOR)); + mpTextAttr->Put(SvxColorItem( + mpVD->GetTextColor(), ColorSets::getColorSetsFromItemSet(*mpTextAttr), EE_CHAR_COLOR)); //... svxfont textitem svditext mbFntDirty = false; } diff --git a/svx/source/toolbars/extrusionbar.cxx b/svx/source/toolbars/extrusionbar.cxx index 51fecface297..ddbedbd728a2 100644 --- a/svx/source/toolbars/extrusionbar.cxx +++ b/svx/source/toolbars/extrusionbar.cxx @@ -1188,7 +1188,7 @@ static void getExtrusionColorState( SdrView const * pSdrView, SfxItemSet& rSet ) aFinalColor = COL_AUTO; if( bHasCustomShape ) - rSet.Put( SvxColorItem( aFinalColor, SID_EXTRUSION_3D_COLOR ) ); + rSet.Put( SvxColorItem( aFinalColor, ColorSets::getColorSetsFromItemSet(rSet), SID_EXTRUSION_3D_COLOR ) ); else rSet.DisableItem( SID_EXTRUSION_3D_COLOR ); } diff --git a/sw/source/core/doc/DocumentStylePoolManager.cxx b/sw/source/core/doc/DocumentStylePoolManager.cxx index 49e399a78a07..1c995ee33009 100644 --- a/sw/source/core/doc/DocumentStylePoolManager.cxx +++ b/sw/source/core/doc/DocumentStylePoolManager.cxx @@ -1547,7 +1547,7 @@ SwFormat* DocumentStylePoolManager::GetFormatFromPool( sal_uInt16 nId ) case RES_POOLCHR_INET_NORMAL: { - aSet.Put( SvxColorItem( COL_BLUE, RES_CHRATR_COLOR ) ); + aSet.Put( SvxColorItem( COL_BLUE, ColorSets::getColorSetsFromItemSet(aSet), RES_CHRATR_COLOR ) ); aSet.Put( SvxUnderlineItem( LINESTYLE_SINGLE, RES_CHRATR_UNDERLINE ) ); // i40133: patch submitted by rail: set language to 'none' to prevent spell checking: aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_LANGUAGE ) ); @@ -1557,7 +1557,7 @@ SwFormat* DocumentStylePoolManager::GetFormatFromPool( sal_uInt16 nId ) break; case RES_POOLCHR_INET_VISIT: { - aSet.Put( SvxColorItem( COL_RED, RES_CHRATR_COLOR ) ); + aSet.Put( SvxColorItem( COL_RED, ColorSets::getColorSetsFromItemSet(aSet), RES_CHRATR_COLOR ) ); aSet.Put( SvxUnderlineItem( LINESTYLE_SINGLE, RES_CHRATR_UNDERLINE ) ); aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_LANGUAGE ) ); aSet.Put( SvxLanguageItem( LANGUAGE_NONE, RES_CHRATR_CJK_LANGUAGE ) ); @@ -1566,7 +1566,7 @@ SwFormat* DocumentStylePoolManager::GetFormatFromPool( sal_uInt16 nId ) break; case RES_POOLCHR_JUMPEDIT: { - aSet.Put( SvxColorItem( COL_CYAN, RES_CHRATR_COLOR ) ); + aSet.Put( SvxColorItem( COL_CYAN, ColorSets::getColorSetsFromItemSet(aSet), RES_CHRATR_COLOR ) ); aSet.Put( SvxUnderlineItem( LINESTYLE_DOTTED, RES_CHRATR_UNDERLINE ) ); aSet.Put( SvxCaseMapItem( SvxCaseMap::SmallCaps, RES_CHRATR_CASEMAP ) ); } diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx index c2f3b3bd9764..c838692e7448 100644 --- a/sw/source/core/table/swtable.cxx +++ b/sw/source/core/table/swtable.cxx @@ -145,7 +145,7 @@ void InsTableBox( SwDoc& rDoc, SwTableNode* pTableNd, { SwAttrSet aAttrSet( *pCNd->GetpSwAttrSet() ); if( pBox->GetSaveUserColor() ) - aAttrSet.Put( SvxColorItem( *pBox->GetSaveUserColor(), RES_CHRATR_COLOR )); + aAttrSet.Put( SvxColorItem( *pBox->GetSaveUserColor(), ColorSets::getColorSetsFromItemSet(aAttrSet), RES_CHRATR_COLOR )); else aAttrSet.ClearItem( RES_CHRATR_COLOR ); rDoc.GetNodes().InsBoxen( pTableNd, pLine, pBoxFrameFormat, diff --git a/sw/source/filter/html/htmldrawreader.cxx b/sw/source/filter/html/htmldrawreader.cxx index 61ab1d493982..4cf9de7714f1 100644 --- a/sw/source/filter/html/htmldrawreader.cxx +++ b/sw/source/filter/html/htmldrawreader.cxx @@ -394,7 +394,7 @@ void SwHTMLParser::NewMarquee( HTMLTable *pCurTable ) const Color& rDfltColor = m_pCSS1Parser->GetTextCollFromPool( RES_POOLCOLL_STANDARD ) ->GetColor().GetValue(); - aItemSet.Put( SvxColorItem( rDfltColor, EE_CHAR_COLOR ) ); + aItemSet.Put(SvxColorItem(rDfltColor, ColorSets::getColorSetsFromItemSet(aItemSet), EE_CHAR_COLOR)); // set the attributes of the current paragraph style sal_uInt16 nWhichIds[] = diff --git a/sw/source/filter/html/htmlforw.cxx b/sw/source/filter/html/htmlforw.cxx index 64d1beb7de46..7af2d441ee70 100644 --- a/sw/source/filter/html/htmlforw.cxx +++ b/sw/source/filter/html/htmlforw.cxx @@ -1060,7 +1060,7 @@ Writer& OutHTML_DrawFrameFormatAsControl( Writer& rWrt, if( auto n = o3tl::tryAccess(aTmp) ) { Color aColor( ColorTransparency, *n ); - aItemSet.Put( SvxColorItem( aColor, RES_CHRATR_COLOR ) ); + aItemSet.Put( SvxColorItem( aColor, ColorSets::getColorSetsFromItemSet(aItemSet), RES_CHRATR_COLOR ) ); } } if( xPropSetInfo->hasPropertyByName( "FontHeight" ) ) diff --git a/sw/source/filter/html/svxcss1.cxx b/sw/source/filter/html/svxcss1.cxx index 280c927320d0..c715741dae4a 100644 --- a/sw/source/filter/html/svxcss1.cxx +++ b/sw/source/filter/html/svxcss1.cxx @@ -1286,7 +1286,7 @@ static void ParseCSS1_color( const CSS1Expression *pExpr, { Color aColor; if( pExpr->GetColor( aColor ) ) - rItemSet.Put( SvxColorItem( aColor, aItemIds.nColor ) ); + rItemSet.Put( SvxColorItem( aColor, ColorSets::getColorSetsFromItemSet(rItemSet), aItemIds.nColor ) ); } break; default: diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx index beedbf13bbb7..b9901ef4cdc1 100644 --- a/sw/source/filter/html/swhtml.cxx +++ b/sw/source/filter/html/swhtml.cxx @@ -3857,7 +3857,7 @@ void SwHTMLParser::NewFontAttr( HtmlTokenId nToken ) aItemSet.Put( aFontHeightCTL ); } if( bColor ) - aItemSet.Put( SvxColorItem(aColor, RES_CHRATR_COLOR) ); + aItemSet.Put( SvxColorItem(aColor, ColorSets::getColorSetsFromItemSet(aItemSet), RES_CHRATR_COLOR) ); if( !aFontName.isEmpty() ) { SvxFontItem aFont( eFamily, aFontName, aStyleName, ePitch, eEnc, RES_CHRATR_FONT ); diff --git a/sw/source/uibase/app/docshini.cxx b/sw/source/uibase/app/docshini.cxx index 284d4a84afdd..5a636b1b9be9 100644 --- a/sw/source/uibase/app/docshini.cxx +++ b/sw/source/uibase/app/docshini.cxx @@ -660,7 +660,7 @@ void SwDocShell::SubInitNew() aDfltSet.Put( SvxTabStopItem( 1, nNewPos, SvxTabAdjust::Default, RES_PARATR_TABSTOP ) ); } - aDfltSet.Put( SvxColorItem( COL_AUTO, RES_CHRATR_COLOR ) ); + aDfltSet.Put( SvxColorItem( COL_AUTO, ColorSets::getColorSetsFromItemSet(aDfltSet), RES_CHRATR_COLOR ) ); m_xDoc->SetDefault( aDfltSet ); diff --git a/sw/source/uibase/app/swmodul1.cxx b/sw/source/uibase/app/swmodul1.cxx index c396d437fd0f..49c1b66e7205 100644 --- a/sw/source/uibase/app/swmodul1.cxx +++ b/sw/source/uibase/app/swmodul1.cxx @@ -516,7 +516,7 @@ static void lcl_FillAuthorAttr( std::size_t nAuthor, SfxItemSet &rSet, } if( !bBackGr ) - rSet.Put( SvxColorItem( aCol, RES_CHRATR_COLOR ) ); + rSet.Put( SvxColorItem( aCol, ColorSets::getColorSetsFromItemSet(rSet), RES_CHRATR_COLOR ) ); } void SwModule::GetInsertAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet) diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx index a81ae435829c..b272a869e7b3 100644 --- a/sw/source/uibase/shells/basesh.cxx +++ b/sw/source/uibase/shells/basesh.cxx @@ -2376,7 +2376,7 @@ void SwBaseShell::GetBckColState(SfxItemSet &rSet) case SID_BACKGROUND_COLOR: case SID_TABLE_CELL_BACKGROUND_COLOR: { - SvxColorItem aColorItem(aBrushItem->GetColor(), nWhich); + SvxColorItem aColorItem(aBrushItem->GetColor(), ColorSets::getColorSetsFromItemSet(rSet), nWhich); rSet.Put(aColorItem); break; } diff --git a/sw/source/uibase/shells/drwtxtex.cxx b/sw/source/uibase/shells/drwtxtex.cxx index 770b46d7e7ba..d459f3b7480c 100644 --- a/sw/source/uibase/shells/drwtxtex.cxx +++ b/sw/source/uibase/shells/drwtxtex.cxx @@ -105,14 +105,14 @@ namespace { case SID_ATTR_CHAR_COLOR: { - SvxColorItem aColorItem(aColor, EE_CHAR_COLOR); + SvxColorItem aColorItem(aColor, ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_COLOR); pArgs->Put(aColorItem); break; } case SID_ATTR_CHAR_BACK_COLOR: { - SvxColorItem pBackgroundItem(aColor, EE_CHAR_BKGCOLOR); + SvxColorItem pBackgroundItem(aColor, ColorSets::getColorSetsFromItemSet(*pArgs), EE_CHAR_BKGCOLOR); pArgs->Put(pBackgroundItem); break; } diff --git a/sw/source/uibase/shells/frmsh.cxx b/sw/source/uibase/shells/frmsh.cxx index 6e990cd632b6..7ed04e7a3537 100644 --- a/sw/source/uibase/shells/frmsh.cxx +++ b/sw/source/uibase/shells/frmsh.cxx @@ -1294,7 +1294,7 @@ void SwFrameShell::GetLineStyleState(SfxItemSet &rSet) rSh.GetFlyFrameAttr(aFrameSet); const SvxBorderLine* pLine = aFrameSet.Get(RES_BOX).GetTop(); - rSet.Put(SvxColorItem(pLine ? pLine->GetColor() : Color(), SID_FRAME_LINECOLOR)); + rSet.Put(SvxColorItem(pLine ? pLine->GetColor() : Color(), ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR)); } } } diff --git a/sw/source/uibase/shells/tabsh.cxx b/sw/source/uibase/shells/tabsh.cxx index cd231be93192..19bc50b4dd1b 100644 --- a/sw/source/uibase/shells/tabsh.cxx +++ b/sw/source/uibase/shells/tabsh.cxx @@ -1546,7 +1546,7 @@ void SwTableShell::GetLineStyleState(SfxItemSet &rSet) const SvxBoxItem& rBoxItem = aCoreSet.Get( RES_BOX ); const SvxBorderLine* pLine = rBoxItem.GetTop(); - rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(), SID_FRAME_LINECOLOR ) ); + rSet.Put( SvxColorItem( pLine ? pLine->GetColor() : Color(), ColorSets::getColorSetsFromItemSet(rSet), SID_FRAME_LINECOLOR ) ); SvxLineItem aLine( SID_FRAME_LINESTYLE ); aLine.SetLine(pLine); rSet.Put( aLine ); diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index f500f618c48a..cafa86f08066 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -1807,12 +1807,12 @@ void SwTextShell::GetState( SfxItemSet &rSet ) const SvxBrushItem& aBrushItem = aSet.Get(RES_CHRATR_HIGHLIGHT); if( aBrushItem.GetColor() != COL_TRANSPARENT ) { - rSet.Put( SvxColorItem(aBrushItem.GetColor(), nWhich) ); + rSet.Put( SvxColorItem(aBrushItem.GetColor(), ColorSets::getColorSetsFromItemSet(rSet), nWhich) ); } else { const SvxBrushItem& aBrushItem2 = aSet.Get(RES_CHRATR_BACKGROUND); - rSet.Put( SvxColorItem(aBrushItem2.GetColor(), nWhich) ); + rSet.Put( SvxColorItem(aBrushItem2.GetColor(), ColorSets::getColorSetsFromItemSet(rSet), nWhich) ); } } break; -- cgit