unify color selectors

Note: this removes the use of auto-color from writer's asian text grid, because
its always invisible as far as I can see in practice.

Change-Id: Ie850790d740a4d56c43015e493e093678cef3b4e
diff --git a/chart2/source/controller/dialogs/dlg_View3D.cxx b/chart2/source/controller/dialogs/dlg_View3D.cxx
index eb0150b..7cfd50f 100644
--- a/chart2/source/controller/dialogs/dlg_View3D.cxx
+++ b/chart2/source/controller/dialogs/dlg_View3D.cxx
@@ -39,7 +39,7 @@ using namespace ::com::sun::star::chart2;

sal_uInt16 View3DDialog::m_nLastPageId = 0;

View3DDialog::View3DDialog(vcl::Window* pParent, const uno::Reference< frame::XModel > & xChartModel, const XColorListRef &pColorTable )
View3DDialog::View3DDialog(vcl::Window* pParent, const uno::Reference< frame::XModel > & xChartModel)
    : TabDialog(pParent, "3DViewDialog", "modules/schart/ui/3dviewdialog.ui")
    , m_pGeometry(nullptr)
    , m_pAppearance(nullptr)
@@ -51,7 +51,7 @@ View3DDialog::View3DDialog(vcl::Window* pParent, const uno::Reference< frame::XM
    uno::Reference< beans::XPropertySet > xSceneProperties( ChartModelHelper::findDiagram( xChartModel ), uno::UNO_QUERY );
    m_pGeometry   = VclPtr<ThreeD_SceneGeometry_TabPage>::Create(m_pTabControl,xSceneProperties,m_aControllerLocker);
    m_pAppearance = VclPtr<ThreeD_SceneAppearance_TabPage>::Create(m_pTabControl,xChartModel,m_aControllerLocker);
    m_pIllumination = VclPtr<ThreeD_SceneIllumination_TabPage>::Create(m_pTabControl,xSceneProperties,xChartModel,pColorTable);
    m_pIllumination = VclPtr<ThreeD_SceneIllumination_TabPage>::Create(m_pTabControl,xSceneProperties,xChartModel);

    m_pTabControl->InsertPage( TP_3D_SCENEGEOMETRY, SCH_RESSTR(STR_PAGE_PERSPECTIVE) );
    m_pTabControl->InsertPage( TP_3D_SCENEAPPEARANCE, SCH_RESSTR(STR_PAGE_APPEARANCE) );
diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
index bdd53ff..40f2857 100644
--- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
+++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.cxx
@@ -22,6 +22,7 @@
#include "Bitmaps.hrc"
#include "CommonConverters.hxx"

#include <svx/colorbox.hxx>
#include "svx/dialogs.hrc"
#include <svx/dialmgr.hxx>
#include <rtl/math.hxx>
@@ -103,7 +104,7 @@ void LightSourceInfo::initButtonFromSource()

namespace
{
    OUString lcl_makeColorName( Color rColor )
    OUString lcl_makeColorName(const Color& rColor)
    {
        OUString aStr = SVX_RESSTR(RID_SVXFLOAT3D_FIX_R) +
                        OUString::number(rColor.GetRed()) +
@@ -115,15 +116,11 @@ namespace
                        OUString::number(rColor.GetBlue());
        return aStr;
    }
    void lcl_selectColor( ColorListBox& rListBox, const Color& rColor )

    void lcl_selectColor(SvxColorListBox& rListBox, const Color& rColor)
    {
        rListBox.SetNoSelection();
        rListBox.SelectEntry( rColor );
        if( rListBox.GetSelectEntryCount() == 0 )
        {
            const sal_Int32 nPos = rListBox.InsertEntry( rColor, lcl_makeColorName( rColor ) );
            rListBox.SelectEntryPos( nPos );
        }
        rListBox.SelectEntry(std::make_pair(rColor, lcl_makeColorName(rColor)));
    }

    ::chart::LightSource lcl_getLightSourceFromProperties(
@@ -215,8 +212,7 @@ namespace

ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage( vcl::Window* pWindow
                , const uno::Reference< beans::XPropertySet > & xSceneProperties
                , const uno::Reference< frame::XModel >& xChartModel
                , const XColorListRef & pColorTable )
                , const uno::Reference< frame::XModel >& xChartModel )
                : TabPage ( pWindow
                          ,"tp_3D_SceneIllumination"
                          ,"modules/schart/ui/tp_3D_SceneIllumination.ui")
@@ -242,14 +238,6 @@ ThreeD_SceneIllumination_TabPage::ThreeD_SceneIllumination_TabPage( vcl::Window*

    get(m_pCtl_Preview, "CTL_LIGHT_PREVIEW");

    if( pColorTable.is() )
    {
        m_pLB_AmbientLight->Fill( pColorTable );
        m_pLB_LightSource->Fill( pColorTable );
    }
    m_pLB_AmbientLight->SetDropDownLineCount(10);
    m_pLB_LightSource->SetDropDownLineCount(10);

    m_pLightSourceInfoList = new LightSourceInfo[8];
    m_pLightSourceInfoList[0].pButton = m_pBtn_Light1;
    m_pLightSourceInfoList[1].pButton = m_pBtn_Light2;
@@ -408,7 +396,7 @@ IMPL_LINK_NOARG(ThreeD_SceneIllumination_TabPage, PreviewSelectHdl, SvxLightCtl3
IMPL_LINK( ThreeD_SceneIllumination_TabPage, ColorDialogHdl, Button*, pButton, void )
{
    bool bIsAmbientLight = (pButton==m_pBtn_AmbientLight_Color);
    ColorLB* pListBox = ( bIsAmbientLight ? m_pLB_AmbientLight : m_pLB_LightSource);
    SvxColorListBox* pListBox = ( bIsAmbientLight ? m_pLB_AmbientLight : m_pLB_LightSource);

    SvColorDialog aColorDlg( this );
    aColorDlg.SetColor( pListBox->GetSelectEntryColor() );
@@ -441,9 +429,9 @@ IMPL_LINK( ThreeD_SceneIllumination_TabPage, ColorDialogHdl, Button*, pButton, v
    }
}

IMPL_LINK( ThreeD_SceneIllumination_TabPage, SelectColorHdl, ListBox&, rBox, void )
IMPL_LINK( ThreeD_SceneIllumination_TabPage, SelectColorHdl, SvxColorListBox&, rBox, void )
{
    ColorLB* pListBox = static_cast<ColorLB*>(&rBox);
    SvxColorListBox* pListBox = &rBox;
    if(pListBox==m_pLB_AmbientLight)
    {
        m_bInCommitToModel = true;
diff --git a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx
index 515ace1..4251735 100644
--- a/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx
+++ b/chart2/source/controller/dialogs/tp_3D_SceneIllumination.hxx
@@ -29,6 +29,8 @@
#include <svx/dlgctrl.hxx>
#include <svx/dlgctl3d.hxx>

class SvxColorListBox;

namespace chart
{

@@ -52,14 +54,13 @@ public:
    ThreeD_SceneIllumination_TabPage(
        vcl::Window* pWindow,
        const css::uno::Reference< css::beans::XPropertySet > & xSceneProperties,
        const css::uno::Reference< css::frame::XModel >& xChartModel,
        const XColorListRef &pColorTable );
        const css::uno::Reference< css::frame::XModel >& xChartModel );
    virtual ~ThreeD_SceneIllumination_TabPage() override;
    virtual void dispose() override;

private:
    DECL_LINK( ClickLightSourceButtonHdl, Button*, void );
    DECL_LINK( SelectColorHdl, ListBox&, void );
    DECL_LINK( SelectColorHdl, SvxColorListBox&, void );
    DECL_LINK( ColorDialogHdl, Button*, void );
    DECL_LINK( PreviewChangeHdl, SvxLightCtl3D*, void );
    DECL_LINK( PreviewSelectHdl, SvxLightCtl3D*, void );
@@ -81,10 +82,10 @@ private:
    VclPtr<LightButton> m_pBtn_Light7;
    VclPtr<LightButton> m_pBtn_Light8;

    VclPtr<ColorLB>     m_pLB_LightSource;
    VclPtr<SvxColorListBox> m_pLB_LightSource;
    VclPtr<PushButton>  m_pBtn_LightSource_Color;

    VclPtr<ColorLB>     m_pLB_AmbientLight;
    VclPtr<SvxColorListBox> m_pLB_AmbientLight;
    VclPtr<PushButton>  m_pBtn_AmbientLight_Color;

    VclPtr<SvxLightCtl3D>   m_pCtl_Preview;
diff --git a/chart2/source/controller/inc/dlg_View3D.hxx b/chart2/source/controller/inc/dlg_View3D.hxx
index b63ece7..a5646ab 100644
--- a/chart2/source/controller/inc/dlg_View3D.hxx
+++ b/chart2/source/controller/inc/dlg_View3D.hxx
@@ -38,8 +38,7 @@ class View3DDialog : public TabDialog
{
public:
    View3DDialog( vcl::Window* pWindow,
                  const css::uno::Reference< css::frame::XModel > & xChartModel,
                  const XColorListRef &pColorTable );
                  const css::uno::Reference< css::frame::XModel > & xChartModel );
    virtual ~View3DDialog() override;
    virtual void dispose() override;

diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx
index 00e7294..7636aa9 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -823,7 +823,7 @@ void ChartController::executeDispatch_View3D()

        //open dialog
        SolarMutexGuard aSolarGuard;
        ScopedVclPtrInstance< View3DDialog > aDlg( m_pChartWindow, getModel(), m_pDrawModelWrapper->GetColorList() );
        ScopedVclPtrInstance< View3DDialog > aDlg(m_pChartWindow, getModel());
        if( aDlg->Execute() == RET_OK )
            aUndoGuard.commit();
    }
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.cxx b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
index b2ff619..ee931d0 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.cxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.cxx
@@ -67,12 +67,12 @@ ChartColorWrapper::ChartColorWrapper(
{
}

void ChartColorWrapper::operator()(const OUString& , const Color& rColor)
void ChartColorWrapper::operator()(const OUString& , const NamedColor& rColor)
{
    css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel);
    assert(xPropSet.is());

    xPropSet->setPropertyValue(maPropertyName, css::uno::makeAny(rColor.GetColor()));
    xPropSet->setPropertyValue(maPropertyName, css::uno::makeAny(rColor.first.GetColor()));
}

void ChartColorWrapper::updateModel(const css::uno::Reference<css::frame::XModel>& xModel)
diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.hxx b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
index 68fb514..b987503 100644
--- a/chart2/source/controller/sidebar/ChartColorWrapper.hxx
+++ b/chart2/source/controller/sidebar/ChartColorWrapper.hxx
@@ -12,6 +12,7 @@

#include <com/sun/star/frame/XFramesSupplier.hpp>
#include <tools/color.hxx>
#include <svx/Palette.hxx>

class SvxColorToolBoxControl;

@@ -26,7 +27,7 @@ public:
            SvxColorToolBoxControl* pControl,
            const OUString& rPropertyName);

    void operator()(const OUString& rCommand, const Color& rColor);
    void operator()(const OUString& rCommand, const NamedColor& rColor);

    void updateModel(const css::uno::Reference<css::frame::XModel>& xModel);

diff --git a/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui b/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
index 7ff9fbf..e445660 100644
--- a/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
+++ b/chart2/uiconfig/ui/tp_3D_SceneIllumination.ui
@@ -236,7 +236,7 @@
                        <property name="can_focus">False</property>
                        <property name="spacing">12</property>
                        <child>
                          <object class="svxlo-ColorLB" id="LB_LIGHTSOURCE">
                          <object class="svxlo-SvxColorListBox" id="LB_LIGHTSOURCE">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                          </object>
@@ -310,7 +310,7 @@
                    <property name="can_focus">False</property>
                    <property name="spacing">12</property>
                    <child>
                      <object class="svxlo-ColorLB" id="LB_AMBIENTLIGHT">
                      <object class="svxlo-SvxColorListBox" id="LB_AMBIENTLIGHT">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                      </object>
diff --git a/cui/source/inc/border.hxx b/cui/source/inc/border.hxx
index 9675b10..915deba 100644
--- a/cui/source/inc/border.hxx
+++ b/cui/source/inc/border.hxx
@@ -25,6 +25,7 @@
#include <vcl/fixed.hxx>
#include <svtools/valueset.hxx>
#include <sfx2/tabdlg.hxx>
#include <svx/colorbox.hxx>
#include <svx/frmsel.hxx>
#include <svx/flagsdef.hxx>

@@ -72,7 +73,7 @@ private:
    VclPtr<svx::FrameSelector> m_pFrameSel;

    VclPtr<LineListBox>        m_pLbLineStyle;
    VclPtr<ColorListBox>       m_pLbLineColor;
    VclPtr<SvxColorListBox>    m_pLbLineColor;
    VclPtr<MetricField>        m_pLineWidthMF;

    VclPtr<VclContainer>       m_pSpacingFrame;
@@ -91,7 +92,7 @@ private:
    VclPtr<FixedText>          m_pFtShadowSize;
    VclPtr<MetricField>        m_pEdShadowSize;
    VclPtr<FixedText>          m_pFtShadowColor;
    VclPtr<ColorListBox>       m_pLbShadowColor;
    VclPtr<SvxColorListBox>    m_pLbShadowColor;


    VclPtr<VclContainer>       m_pPropertiesFrame;///< properties - "Merge with next paragraph" in Writer
@@ -120,7 +121,7 @@ private:

    // Handler
    DECL_LINK( SelStyleHdl_Impl, ListBox&, void );
    DECL_LINK( SelColHdl_Impl, ListBox&, void );
    DECL_LINK( SelColHdl_Impl, SvxColorListBox&, void );
    DECL_LINK( SelPreHdl_Impl, ValueSet*, void );
    DECL_LINK( SelSdwHdl_Impl, ValueSet*, void );
    DECL_LINK( LinesChanged_Impl, LinkParamNone*, void );
diff --git a/cui/source/inc/chardlg.hxx b/cui/source/inc/chardlg.hxx
index bea73e4..484897d 100644
--- a/cui/source/inc/chardlg.hxx
+++ b/cui/source/inc/chardlg.hxx
@@ -23,6 +23,7 @@
#include <sfx2/tabdlg.hxx>
#include <svx/fntctrl.hxx>
#include <svx/checklbx.hxx>
#include <svx/colorbox.hxx>
#include <svx/langbox.hxx>
#include <vcl/layout.hxx>
#include <memory>
@@ -175,7 +176,7 @@ class SvxCharEffectsPage : public SvxCharBasePage
private:
    static const sal_uInt16 pEffectsRanges[];
    VclPtr<FixedText>          m_pFontColorFT;
    VclPtr<ColorListBox>       m_pFontColorLB;
    VclPtr<SvxColorListBox>    m_pFontColorLB;

    VclPtr<FixedText>          m_pEffectsFT;
    VclPtr<ListBox>            m_pEffectsLB;
@@ -190,13 +191,13 @@ private:

    VclPtr<ListBox>            m_pOverlineLB;
    VclPtr<FixedText>          m_pOverlineColorFT;
    VclPtr<ColorListBox>       m_pOverlineColorLB;
    VclPtr<SvxColorListBox>    m_pOverlineColorLB;

    VclPtr<ListBox>            m_pStrikeoutLB;

    VclPtr<ListBox>            m_pUnderlineLB;
    VclPtr<FixedText>          m_pUnderlineColorFT;
    VclPtr<ColorListBox>       m_pUnderlineColorLB;
    VclPtr<SvxColorListBox>    m_pUnderlineColorLB;

    VclPtr<CheckBox>           m_pIndividualWordsBtn;

@@ -210,8 +211,6 @@ private:

    sal_uInt16          m_nHtmlMode;

    OUString            m_aTransparentColorName;

                        SvxCharEffectsPage( vcl::Window* pParent, const SfxItemSet& rSet );

    void                Initialize();
@@ -225,7 +224,7 @@ private:
    DECL_LINK(CbClickHdl_Impl, Button*, void);
    DECL_LINK(TristClickHdl_Impl, Button*, void);
    DECL_LINK(UpdatePreview_Impl, ListBox&, void);
    DECL_LINK(ColorBoxSelectHdl_Impl, ListBox&, void);
    DECL_LINK(ColorBoxSelectHdl_Impl, SvxColorListBox&, void);

public:
    virtual ~SvxCharEffectsPage() override;
diff --git a/cui/source/inc/cuires.hrc b/cui/source/inc/cuires.hrc
index 0f57cf6..33f5ea3 100644
--- a/cui/source/inc/cuires.hrc
+++ b/cui/source/inc/cuires.hrc
@@ -85,7 +85,6 @@
#define RID_SVXSTR_CONNECTOR                (RID_SVX_START + 221)
#define RID_SVXSTR_DIMENSION_LINE           (RID_SVX_START + 222)

#define RID_SVXSTR_CHARNAME_TRANSPARENT     (RID_SVX_START + 237)
#define RID_SVXSTR_DESC_LINEEND             (RID_SVX_START + 238)
#define RID_SVXSTR_CHARNAME_NOSTYLE         (RID_SVX_START + 239)
#define RID_SVXSTR_CHARNAME_FAMILY          (RID_SVX_START + 240)
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index 52d4fce..362777a 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -39,6 +39,7 @@

class SdrModel;
class SvxBitmapCtl;
class SvxColorListBox;

/************************************************************************/
class ButtonBox
@@ -321,7 +322,7 @@ private:
    VclPtr<VclGrid>            m_pGridShadow;
    VclPtr<SvxRectCtl>         m_pCtlPosition;
    VclPtr<MetricField>        m_pMtrDistance;
    VclPtr<ColorLB>            m_pLbShadowColor;
    VclPtr<SvxColorListBox>    m_pLbShadowColor;
    VclPtr<MetricField>        m_pMtrTransparent;
    VclPtr<SvxXShadowPreview>  m_pCtlXRectPreview;

@@ -340,14 +341,13 @@ private:

    DECL_LINK( ClickShadowHdl_Impl, Button*, void );
    DECL_LINK( ModifyShadowHdl_Impl, Edit&, void );
    DECL_LINK( SelectShadowHdl_Impl, ListBox&, void );
    DECL_LINK( SelectShadowHdl_Impl, SvxColorListBox&, void );

public:
    SvxShadowTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs  );
    virtual ~SvxShadowTabPage() override;
    virtual void dispose() override;

    void    Construct();
    static VclPtr<SfxTabPage> Create( vcl::Window*, const SfxItemSet* );
    static const sal_uInt16* GetRanges() { return pShadowRanges; }

@@ -381,9 +381,9 @@ private:
    VclPtr<MetricField>        m_pMtrAngle;
    VclPtr<MetricField>        m_pMtrBorder;
    VclPtr<Slider>             m_pSliderBorder;
    VclPtr<ColorLB>            m_pLbColorFrom;
    VclPtr<SvxColorListBox>    m_pLbColorFrom;
    VclPtr<MetricField>        m_pMtrColorFrom;
    VclPtr<ColorLB>            m_pLbColorTo;
    VclPtr<SvxColorListBox>    m_pLbColorTo;
    VclPtr<MetricField>        m_pMtrColorTo;
    VclPtr<SvxPresetListBox>   m_pGradientLB;
    VclPtr<NumericField>       m_pMtrIncrement;
@@ -413,6 +413,7 @@ private:
    DECL_LINK( ClickRenameHdl_Impl, SvxPresetListBox*, void );
    DECL_LINK( ClickDeleteHdl_Impl, SvxPresetListBox*, void );
    DECL_LINK( ModifiedEditHdl_Impl, Edit&, void );
    DECL_LINK( ModifiedColorListBoxHdl_Impl, SvxColorListBox&, void );
    DECL_LINK( ModifiedListBoxHdl_Impl, ListBox&, void );
    DECL_LINK( ChangeAutoStepHdl_Impl, CheckBox&, void );
    DECL_LINK( ModifiedSliderHdl_Impl, Slider*, void );
@@ -455,9 +456,9 @@ private:
    VclPtr<MetricField>        m_pMtrAngle;
    VclPtr<Slider>             m_pSliderAngle;
    VclPtr<ListBox>            m_pLbLineType;
    VclPtr<ColorLB>            m_pLbLineColor;
    VclPtr<SvxColorListBox>    m_pLbLineColor;
    VclPtr<CheckBox>           m_pCbBackgroundColor;
    VclPtr<ColorLB>            m_pLbBackgroundColor;
    VclPtr<SvxColorListBox>    m_pLbBackgroundColor;
    VclPtr<SvxPresetListBox>   m_pHatchLB;
    VclPtr<SvxXRectPreview>    m_pCtlPreview;
    VclPtr<PushButton>         m_pBtnAdd;
@@ -483,8 +484,9 @@ private:
    void ChangeHatchHdl_Impl();
    DECL_LINK( ModifiedEditHdl_Impl, Edit&, void );
    DECL_LINK( ModifiedListBoxHdl_Impl, ListBox&, void );
    DECL_LINK( ModifiedColorListBoxHdl_Impl, SvxColorListBox&, void );
    DECL_LINK( ToggleHatchBackgroundColor_Impl, CheckBox&, void );
    DECL_LINK( ModifiedBackgroundHdl_Impl, ListBox&, void );
    DECL_LINK( ModifiedBackgroundHdl_Impl, SvxColorListBox&, void );
    DECL_LINK( ModifiedSliderHdl_Impl, Slider*, void );
    void ModifiedHdl_Impl(void*);
    DECL_LINK( ClickAddHdl_Impl, Button*, void );
@@ -613,8 +615,8 @@ class SvxPatternTabPage : public SvxTabPage
private:
    VclPtr<VclBox>             m_pBxPixelEditor;
    VclPtr<SvxPixelCtl>        m_pCtlPixel;
    VclPtr<ColorLB>            m_pLbColor;
    VclPtr<ColorLB>            m_pLbBackgroundColor;
    VclPtr<SvxColorListBox>    m_pLbColor;
    VclPtr<SvxColorListBox>    m_pLbBackgroundColor;
    VclPtr<SvxPresetListBox>   m_pPatternLB;
    VclPtr<SvxXRectPreview>    m_pCtlPreview;
    VclPtr<PushButton>         m_pBtnAdd;
@@ -642,7 +644,7 @@ private:
    DECL_LINK( ClickAddHdl_Impl, Button*, void );
    DECL_LINK( ClickModifyHdl_Impl, Button*, void );
    DECL_LINK( ChangePatternHdl_Impl, ValueSet*, void );
    DECL_LINK( ChangeColorHdl_Impl, ListBox&, void );
    DECL_LINK( ChangeColorHdl_Impl, SvxColorListBox&, void );
    DECL_LINK( ClickRenameHdl_Impl, SvxPresetListBox*, void );
    DECL_LINK( ClickDeleteHdl_Impl, SvxPresetListBox*, void );

diff --git a/cui/source/inc/cuitabline.hxx b/cui/source/inc/cuitabline.hxx
index 957b421..39e7498 100644
--- a/cui/source/inc/cuitabline.hxx
+++ b/cui/source/inc/cuitabline.hxx
@@ -25,6 +25,7 @@
#include <svx/tabarea.hxx>

enum class PageType;
class SvxColorListBox;

class SvxLineTabDialog : public SfxTabDialog
{
@@ -92,7 +93,7 @@ class SvxLineTabPage : public SvxTabPage
private:
    VclPtr<VclBox>             m_pBoxColor;
    VclPtr<LineLB>             m_pLbLineStyle;
    VclPtr<ColorLB>            m_pLbColor;
    VclPtr<SvxColorListBox>    m_pLbColor;
    VclPtr<VclBox>             m_pBoxWidth;
    VclPtr<MetricField>        m_pMtrLineWidth;
    VclPtr<VclBox>             m_pBoxTransparency;
@@ -182,7 +183,7 @@ private:
    DECL_LINK( ChangeEndModifyHdl_Impl, Edit&, void );
    DECL_LINK( ChangeEndClickHdl_Impl, Button*, void );
    void ChangeEndHdl_Impl(void*);
    DECL_LINK( ChangePreviewListBoxHdl_Impl, ListBox&, void );
    DECL_LINK( ChangePreviewListBoxHdl_Impl, SvxColorListBox&, void );
    DECL_LINK( ChangePreviewModifyHdl_Impl, Edit&, void );
    void ChangePreviewHdl_Impl(void*);
    DECL_LINK( ChangeTransparentHdl_Impl, Edit&, void );
diff --git a/cui/source/inc/numpages.hxx b/cui/source/inc/numpages.hxx
index 7f65cbf..afaaf1e 100644
--- a/cui/source/inc/numpages.hxx
+++ b/cui/source/inc/numpages.hxx
@@ -23,6 +23,7 @@
#include <memory>

#include <sfx2/tabdlg.hxx>
#include <svx/Palette.hxx>
#include <vcl/group.hxx>
#include <vcl/fixed.hxx>
#include <vcl/menubtn.hxx>
@@ -33,6 +34,7 @@
#include <svtools/ctrlbox.hxx>
#include <vcl/dialog.hxx>

class SvxColorListBox;
class SvxNumRule;
class SvxBmpNumValueSet;
class SvxNumValueSet;
@@ -254,7 +256,7 @@ class SvxNumOptionsTabPage : public SfxTabPage
    VclPtr<FixedText>      m_pCharFmtFT;
    VclPtr<ListBox>        m_pCharFmtLB;
    VclPtr<FixedText>      m_pBulColorFT;
    VclPtr<ColorListBox>   m_pBulColLB;
    VclPtr<SvxColorListBox> m_pBulColLB;
    VclPtr<FixedText>      m_pBulRelSizeFT;
    VclPtr<MetricField>    m_pBulRelSizeMF;
    VclPtr<FixedText>      m_pAllLevelFT;
@@ -327,7 +329,7 @@ class SvxNumOptionsTabPage : public SfxTabPage
        DECL_LINK( AllLevelHdl_Impl, Edit&, void );
        DECL_LINK( OrientHdl_Impl, ListBox&, void );
        DECL_LINK( SameLevelHdl_Impl, Button*, void );
        DECL_LINK( BulColorHdl_Impl, ListBox&, void );
        DECL_LINK( BulColorHdl_Impl, SvxColorListBox&, void );
        DECL_LINK( BulRelSizeHdl_Impl, Edit&, void);
        DECL_LINK( PreviewInvalidateHdl_Impl, Timer *, void);
        void EditModifyHdl_Impl(Edit*);
diff --git a/cui/source/options/optcolor.cxx b/cui/source/options/optcolor.cxx
index 43f76b4..1d962bd 100644
--- a/cui/source/options/optcolor.cxx
+++ b/cui/source/options/optcolor.cxx
@@ -21,11 +21,13 @@

#include <bitset>

#include <editeng/editids.hrc>
#include <svtools/colorcfg.hxx>
#include <svtools/extcolorcfg.hxx>
#include <svtools/headbar.hxx>
#include <svtools/ctrlbox.hxx>
#include <vcl/scrbar.hxx>
#include <svx/colorbox.hxx>
#include <svx/xtable.hxx>
#include <unotools/moduleoptions.hxx>
#include <unotools/pathoptions.hxx>
@@ -177,12 +179,12 @@ public:
    virtual void dispose() override;

public:
    void SetLinks (Link<Button*,void> const&, Link<ListBox&,void> const&, Link<Control&,void> const&);
    void SetLinks (Link<Button*,void> const&, Link<SvxColorListBox&,void> const&, Link<Control&,void> const&);
    unsigned GetEntryHeight () const { return vEntries[0]->GetHeight(); }
    void Update (EditableColorConfig const*, EditableExtendedColorConfig const*);
    void ScrollHdl(const ScrollBar&);
    void ClickHdl (EditableColorConfig*, CheckBox*);
    void ColorHdl (EditableColorConfig*, EditableExtendedColorConfig*, ColorListBox*);
    void ColorHdl (EditableColorConfig*, EditableExtendedColorConfig*, SvxColorListBox*);
    void Init(ScrollBar *pVScroll, HeaderBar *m_pHeaderHB);
    void AdjustScrollBar();
    void AdjustHeaderBar();
@@ -214,10 +216,10 @@ private:
    public:
        void Show ();
        void Hide ();
        void SetAppearance(Wallpaper const& aTextWall, ColorListBox const& aSampleList);
        void SetAppearance(Wallpaper const& rTextWall);
        void SetTextColor (Color C) { m_pText->SetTextColor(C); }
    public:
        void SetLinks (Link<Button*,void> const&, Link<ListBox&,void> const&, Link<Control&,void> const&);
        void SetLinks (Link<Button*,void> const&, Link<SvxColorListBox&,void> const&, Link<Control&,void> const&);
        void Update (ColorConfigEntry, ColorConfigValue const&);
        void Update (ExtendedColorConfigValue const&);
        void ColorChanged (ColorConfigEntry, ColorConfigValue&);
@@ -227,7 +229,7 @@ private:
        unsigned GetHeight () const { return m_pColorList->GetSizePixel().Height(); }
    public:
        bool Is (CheckBox* pBox) const { return m_pText == pBox; }
        bool Is (ColorListBox* pBox) const { return m_pColorList == pBox; }
        bool Is (SvxColorListBox* pBox) const { return m_pColorList == pBox; }
        void dispose()
        {
            m_pText.disposeAndClear();
@@ -239,7 +241,7 @@ private:
        // checkbox (CheckBox) or simple text (FixedText)
        VclPtr<Control> m_pText;
        // color list box
        VclPtr<ColorListBox> m_pColorList;
        VclPtr<SvxColorListBox> m_pColorList;
        // color preview box
        VclPtr<vcl::Window> m_pPreview;
        // default color
@@ -350,9 +352,7 @@ ColorConfigWindow_Impl::Entry::Entry( vcl::Window *pGrid, unsigned nYPos,
    m_pText->set_margin_left(6 + nCheckBoxLabelOffset);
    m_pText->SetText(rColorEntry.getDisplayName());

    WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP|WB_DROPDOWN;
    m_pColorList = VclPtr<ColorListBox>::Create(pGrid, nWinBits);
    m_pColorList->EnableAutoSize(true);
    m_pColorList = VclPtr<SvxColorListBox>::Create(pGrid);
    m_pColorList->set_grid_left_attach(1);
    m_pColorList->set_grid_top_attach(nYPos);

@@ -390,24 +390,22 @@ void ColorConfigWindow_Impl::Entry::Hide()

// SetAppearance()
// iEntry: which entry is this?
// aTextWall: background of the text (transparent)
// rTextWall: background of the text (transparent)
// aSampleList: sample color listbox (to copy from)
void ColorConfigWindow_Impl::Entry::SetAppearance(
    Wallpaper const& aTextWall,
    ColorListBox const& aSampleList)
void ColorConfigWindow_Impl::Entry::SetAppearance(Wallpaper const& rTextWall)
{
    // text (and optionally checkbox)
    m_pText->SetBackground(aTextWall);
    m_pText->SetBackground(rTextWall);
    // preview
    m_pPreview->SetBorderStyle(WindowBorderStyle::MONO);
    // color list
    m_pColorList->CopyEntries(aSampleList);
    m_pColorList->InsertAutomaticEntryColor(m_aDefaultColor);
    m_pColorList->SetSlotId(SID_ATTR_CHAR_COLOR);
    m_pColorList->SetAutoDisplayColor(m_aDefaultColor);
}

// SetLinks()
void ColorConfigWindow_Impl::Entry::SetLinks(
    Link<Button*,void> const& aCheckLink, Link<ListBox&,void> const& aColorLink,
    Link<Button*,void> const& aCheckLink, Link<SvxColorListBox&,void> const& aColorLink,
    Link<Control&,void> const& aGetFocusLink)
{
    m_pColorList->SetSelectHdl(aColorLink);
@@ -423,17 +421,10 @@ void ColorConfigWindow_Impl::Entry::SetLinks(
void ColorConfigWindow_Impl::Entry::Update (
    ColorConfigEntry aColorEntry, ColorConfigValue const& rValue
) {
    Color aColor;
    if ((unsigned)rValue.nColor == COL_AUTO)
    {
    Color aColor(rValue.nColor);
    m_pColorList->SelectEntry(aColor);
    if (aColor.GetColor() == COL_AUTO)
        aColor = ColorConfig::GetDefaultColor(aColorEntry);
        m_pColorList->SelectEntryPos(0);
    }
    else
    {
        aColor = Color(rValue.nColor);
        m_pColorList->SelectEntry(aColor);
    }
    m_pPreview->SetBackground(Wallpaper(aColor));
    if (CheckBox* pCheckBox = dynamic_cast<CheckBox*>(m_pText.get()))
        pCheckBox->Check(rValue.bIsVisible);
@@ -445,7 +436,7 @@ void ColorConfigWindow_Impl::Entry::Update (
) {
    Color aColor(rValue.getColor());
    if (rValue.getColor() == rValue.getDefaultColor())
        m_pColorList->SelectEntryPos(0);
        m_pColorList->SelectEntry(Color(COL_AUTO));
    else
        m_pColorList->SelectEntry(aColor);
    SetColor(aColor);
@@ -456,17 +447,10 @@ void ColorConfigWindow_Impl::Entry::ColorChanged (
    ColorConfigEntry aColorEntry,
    ColorConfigValue& rValue
) {
    Color aColor;
    if (m_pColorList->IsAutomaticSelected())
    {
    Color aColor = m_pColorList->GetSelectEntryColor();
    rValue.nColor = aColor.GetColor();
    if (aColor.GetColor() == COL_AUTO)
        aColor = ColorConfig::GetDefaultColor(aColorEntry);
        rValue.nColor = COL_AUTO;
    }
    else
    {
        aColor = m_pColorList->GetSelectEntryColor();
        rValue.nColor = aColor.GetColor();
    }
    SetColor(aColor);
}

@@ -476,8 +460,7 @@ void ColorConfigWindow_Impl::Entry::ColorChanged (
) {
    Color aColor = m_pColorList->GetSelectEntryColor();
    rValue.setColor(aColor.GetColor());
    // automatic?
    if (m_pColorList->GetSelectEntryPos() == 0)
    if (aColor.GetColor() == COL_AUTO)
    {
        rValue.setColor(rValue.getDefaultColor());
        aColor.SetColor(rValue.getColor());
@@ -628,22 +611,11 @@ void ColorConfigWindow_Impl::SetAppearance ()

    OSL_ENSURE( vEntries.size() >= SAL_N_ELEMENTS(vEntryInfo), "wrong number of helpIDs for color listboxes" );

    // creating a sample color listbox with the color entries
    ScopedVclPtrInstance< ColorListBox > aSampleColorList(this);
    {
        XColorListRef const xColorTable = XColorList::CreateStdColorList();
        for (sal_Int32 i = 0; i != xColorTable->Count(); ++i)
        {
            XColorEntry& rEntry = *xColorTable->GetColor(i);
            aSampleColorList->InsertEntry(rEntry.GetColor(), rEntry.GetName());
        }
    }

    // appearance
    for (size_t i = 0; i != vEntries.size(); ++i)
    {
        // appearance
        vEntries[i]->SetAppearance(aTransparentWall, *aSampleColorList.get());
        vEntries[i]->SetAppearance(aTransparentWall);
    }
}

@@ -681,7 +653,7 @@ void ColorConfigWindow_Impl::Init(ScrollBar *pVScroll, HeaderBar *pHeaderHB)

// SetLinks()
void ColorConfigWindow_Impl::SetLinks (
    Link<Button*,void> const& aCheckLink, Link<ListBox&,void> const& aColorLink, Link<Control&,void> const& aGetFocusLink
    Link<Button*,void> const& aCheckLink, Link<SvxColorListBox&,void> const& aColorLink, Link<Control&,void> const& aGetFocusLink
) {
    for (unsigned i = 0; i != vEntries.size(); ++i)
        vEntries[i]->SetLinks(aCheckLink, aColorLink, aGetFocusLink);
@@ -742,10 +714,10 @@ void ColorConfigWindow_Impl::ClickHdl (EditableColorConfig* pConfig, CheckBox* p
}

// ColorHdl()
void ColorConfigWindow_Impl::ColorHdl (
void ColorConfigWindow_Impl::ColorHdl(
    EditableColorConfig* pConfig, EditableExtendedColorConfig* pExtConfig,
    ColorListBox* pBox
) {
    SvxColorListBox* pBox)
{
    unsigned i = 0;

    // default entries
@@ -838,7 +810,7 @@ class ColorConfigCtrl_Impl : public VclVBox

    DECL_LINK(ScrollHdl, ScrollBar*, void);
    DECL_LINK(ClickHdl, Button*, void);
    DECL_LINK(ColorHdl, ListBox&, void);
    DECL_LINK(ColorHdl, SvxColorListBox&, void);
    DECL_LINK(ControlFocusHdl, Control&, void);

    virtual bool PreNotify (NotifyEvent& rNEvt) override;
@@ -892,7 +864,7 @@ ColorConfigCtrl_Impl::ColorConfigCtrl_Impl(vcl::Window* pParent)
    m_pVScroll->SetEndScrollHdl(aScrollLink);

    Link<Button*,void> aCheckLink = LINK(this, ColorConfigCtrl_Impl, ClickHdl);
    Link<ListBox&,void> aColorLink = LINK(this, ColorConfigCtrl_Impl, ColorHdl);
    Link<SvxColorListBox&,void> aColorLink = LINK(this, ColorConfigCtrl_Impl, ColorHdl);
    Link<Control&,void> aGetFocusLink = LINK(this, ColorConfigCtrl_Impl, ControlFocusHdl);
    m_pScrollWindow->SetLinks(aCheckLink, aColorLink, aGetFocusLink);

@@ -998,11 +970,12 @@ IMPL_LINK(ColorConfigCtrl_Impl, ClickHdl, Button*, pBox, void)
}

// a color list has changed
IMPL_LINK(ColorConfigCtrl_Impl, ColorHdl, ListBox&, rBox, void)
IMPL_LINK(ColorConfigCtrl_Impl, ColorHdl, SvxColorListBox&, rBox, void)
{
    DBG_ASSERT(pColorConfig, "Configuration not set" );
    m_pScrollWindow->ColorHdl(pColorConfig, pExtColorConfig, static_cast<ColorListBox*>(&rBox));
    m_pScrollWindow->ColorHdl(pColorConfig, pExtColorConfig, &rBox);
}

IMPL_LINK(ColorConfigCtrl_Impl, ControlFocusHdl, Control&, rCtrl, void)
{
    // determine whether a control is completely visible
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
index ce9948c..41e525d 100644
--- a/cui/source/tabpages/backgrnd.cxx
+++ b/cui/source/tabpages/backgrnd.cxx
@@ -381,7 +381,7 @@ SvxBackgroundTabPage::SvxBackgroundTabPage(vcl::Window* pParent, const SfxItemSe

    m_pBackgroundColorSet->SetSelectHdl( HDL(BackgroundColorHdl_Impl) );
    m_pBackgroundColorSet->SetStyle(m_pBackgroundColorSet->GetStyle() | WB_ITEMBORDER | WB_NAMEFIELD | WB_NONEFIELD);
    m_pBackgroundColorSet->SetText(SVX_RESSTR(RID_SVXSTR_TRANSPARENT));
    m_pBackgroundColorSet->SetText(SVX_RESSTR(RID_SVXSTR_NOFILL));
}

SvxBackgroundTabPage::~SvxBackgroundTabPage()
diff --git a/cui/source/tabpages/border.cxx b/cui/source/tabpages/border.cxx
index d74ae35..f989a7c 100644
--- a/cui/source/tabpages/border.cxx
+++ b/cui/source/tabpages/border.cxx
@@ -284,45 +284,13 @@ SvxBorderTabPage::SvxBorderTabPage(vcl::Window* pParent, const SfxItemSet& rCore
    m_pLbLineStyle->SetSelectHdl( LINK( this, SvxBorderTabPage, SelStyleHdl_Impl ) );
    m_pLbLineColor->SetSelectHdl( LINK( this, SvxBorderTabPage, SelColHdl_Impl ) );
    m_pLineWidthMF->SetModifyHdl( LINK( this, SvxBorderTabPage, ModifyWidthHdl_Impl ) );
    m_pLbShadowColor->SetSelectHdl( LINK( this, SvxBorderTabPage, SelColHdl_Impl ) );
    m_pWndPresets->SetSelectHdl( LINK( this, SvxBorderTabPage, SelPreHdl_Impl ) );
    m_pWndShadows->SetSelectHdl( LINK( this, SvxBorderTabPage, SelSdwHdl_Impl ) );

    FillValueSets();
    FillLineListBox_Impl();

    // fill ColorBox out of the XColorList
    SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
    XColorListRef       pColorTable;

    DBG_ASSERT( pDocSh, "DocShell not found!" );

    if ( pDocSh )
    {
        pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem != nullptr )
            pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
    }

    DBG_ASSERT( pColorTable.is(), "ColorTable not found!" );

    if ( pColorTable.is() )
    {
        // filling the line color box
        m_pLbLineColor->SetUpdateMode( false );

        for ( long i = 0; i < pColorTable->Count(); ++i )
        {
            const XColorEntry* pEntry = pColorTable->GetColor(i);
            m_pLbLineColor->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        }
        m_pLbLineColor->SetUpdateMode( true );

        m_pLbShadowColor->CopyEntries(*m_pLbLineColor);
    }

    // connections

    bool bSupportsShadow = !SfxItemPool::IsSlot( GetWhich( SID_ATTR_BORDER_SHADOW ) );
    if( bSupportsShadow )
        AddItemConnection( svx::CreateShadowConnection( rCoreAttrs, *m_pWndShadows, *m_pEdShadowSize, *m_pLbShadowColor ) );
@@ -344,7 +312,8 @@ SvxBorderTabPage::SvxBorderTabPage(vcl::Window* pParent, const SfxItemSet& rCore
    AddItemConnection( new sfx::CheckBoxConnection( SID_SW_COLLAPSING_BORDERS, *m_pMergeAdjacentBordersCB, ItemConnFlags::NONE ) );
    m_pMergeAdjacentBordersCB->Hide();

    if( pDocSh )
    SfxObjectShell* pDocSh = SfxObjectShell::Current();
    if (pDocSh)
    {
        Reference< XServiceInfo > xSI( pDocSh->GetModel(), UNO_QUERY );
        if ( xSI.is() )
@@ -564,12 +533,8 @@ void SvxBorderTabPage::Reset( const SfxItemSet* rSet )
        if( !bColorEq )
            aColor.SetColor( COL_BLACK );

        sal_Int32 nSelPos = m_pLbLineColor->GetEntryPos( aColor );
        if( nSelPos == LISTBOX_ENTRY_NOTFOUND )
            nSelPos = m_pLbLineColor->InsertEntry( aColor, SVX_RESSTR( RID_SVXSTR_COLOR_USER ) );

        m_pLbLineColor->SelectEntryPos( nSelPos );
        m_pLbLineStyle->SetColor( aColor );
        m_pLbLineColor->SelectEntry(aColor);
        m_pLbLineStyle->SetColor(aColor);

        // Select all visible lines, if they are all equal.
        if( bWidthEq && bColorEq )
@@ -577,7 +542,6 @@ void SvxBorderTabPage::Reset( const SfxItemSet* rSet )

        // set the current style and color (caches style in control even if nothing is selected)
        SelStyleHdl_Impl(*m_pLbLineStyle);
        SelColHdl_Impl(*m_pLbLineColor);
    }

    bool bEnable = m_pWndShadows->GetSelectItemId() > 1 ;
@@ -868,7 +832,6 @@ IMPL_LINK_NOARG(SvxBorderTabPage, SelPreHdl_Impl, ValueSet*, void)

        // set current style to all previously selected lines
        SelStyleHdl_Impl(*m_pLbLineStyle);
        SelColHdl_Impl(*m_pLbLineColor);
    }

    // Presets ValueSet does not show a selection (used as push buttons).
@@ -888,16 +851,11 @@ IMPL_LINK_NOARG(SvxBorderTabPage, SelSdwHdl_Impl, ValueSet*, void)
    m_pLbShadowColor->Enable(bEnable);
}


IMPL_LINK( SvxBorderTabPage, SelColHdl_Impl, ListBox&, rLb, void )
IMPL_LINK(SvxBorderTabPage, SelColHdl_Impl, SvxColorListBox&, rColorBox, void)
{
    ColorListBox* pColLb = static_cast<ColorListBox*>(&rLb);

    if (&rLb == m_pLbLineColor)
    {
        m_pFrameSel->SetColorToSelection( pColLb->GetSelectEntryColor() );
        m_pLbLineStyle->SetColor( pColLb->GetSelectEntryColor() );
    }
    Color aColor = rColorBox.GetSelectEntryColor();
    m_pFrameSel->SetColorToSelection(aColor);
    m_pLbLineStyle->SetColor(aColor);
}

IMPL_LINK_NOARG(SvxBorderTabPage, ModifyWidthHdl_Impl, Edit&, void)
diff --git a/cui/source/tabpages/borderconn.cxx b/cui/source/tabpages/borderconn.cxx
index 5aec146..70243d055 100644
--- a/cui/source/tabpages/borderconn.cxx
+++ b/cui/source/tabpages/borderconn.cxx
@@ -22,6 +22,7 @@
#include "editeng/lineitem.hxx"
#include <editeng/boxitem.hxx>
#include <svx/algitem.hxx>
#include <svx/colorbox.hxx>
#include <editeng/shaditem.hxx>

namespace svx {
@@ -203,7 +204,7 @@ static const ShadowPosWrapper::MapEntryType s_pShadowPosMap[] =
class ShadowControlsWrapper : public sfx::MultiControlWrapper< SvxShadowItem >
{
public:
    explicit            ShadowControlsWrapper( ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor );
    explicit            ShadowControlsWrapper( ValueSet& rVsPos, MetricField& rMfSize, SvxColorListBox& rLbColor );

    virtual SvxShadowItem GetControlValue() const override;
    virtual void        SetControlValue( SvxShadowItem aItem ) override;
@@ -211,11 +212,11 @@ public:
private:
    ShadowPosWrapper                    maPosWrp;
    sfx::MetricFieldWrapper<sal_uInt16> maSizeWrp;
    sfx::ColorListBoxWrapper            maColorWrp;
    SvxColorListBoxWrapper              maColorWrp;
};

ShadowControlsWrapper::ShadowControlsWrapper(
        ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor ) :
        ValueSet& rVsPos, MetricField& rMfSize, SvxColorListBox& rLbColor ) :
    maPosWrp( rVsPos, s_pShadowPosMap ),
    maSizeWrp( rMfSize, FUNIT_TWIP ),
    maColorWrp( rLbColor )
@@ -250,11 +251,11 @@ class ShadowConnection : public sfx::ItemControlConnection< ShadowItemWrapper, S
{
public:
    explicit            ShadowConnection( const SfxItemSet& rItemSet,
                                ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor );
                                ValueSet& rVsPos, MetricField& rMfSize, SvxColorListBox& rLbColor );
};

ShadowConnection::ShadowConnection( const SfxItemSet& rItemSet,
        ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor ) :
        ValueSet& rVsPos, MetricField& rMfSize, SvxColorListBox& rLbColor ) :
    ItemControlConnectionType( SID_ATTR_BORDER_SHADOW, new ShadowControlsWrapper( rVsPos, rMfSize, rLbColor ), ItemConnFlags::NONE )
{
    mxCtrlWrp->SetDefaultValue( maItemWrp.GetDefaultItem( rItemSet ) );
@@ -275,7 +276,7 @@ sfx::ItemConnectionBase* CreateMarginConnection( const SfxItemSet& rItemSet,
}

sfx::ItemConnectionBase* CreateShadowConnection( const SfxItemSet& rItemSet,
        ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor )
        ValueSet& rVsPos, MetricField& rMfSize, SvxColorListBox& rLbColor )
{
    return new ShadowConnection( rItemSet, rVsPos, rMfSize, rLbColor );
}
diff --git a/cui/source/tabpages/borderconn.hxx b/cui/source/tabpages/borderconn.hxx
index 17343d8..b04d4a8 100644
--- a/cui/source/tabpages/borderconn.hxx
+++ b/cui/source/tabpages/borderconn.hxx
@@ -26,7 +26,7 @@
class SfxItemSet;
class MetricField;
class ValueSet;
class ColorListBox;
class SvxColorListBox;

namespace svx {

@@ -47,7 +47,7 @@ sfx::ItemConnectionBase* CreateMarginConnection( const SfxItemSet& rItemSet,
/** Creates an item connection object that connects an SvxShadowItem with the
    controls of the SvxBorderTabPage. */
sfx::ItemConnectionBase* CreateShadowConnection( const SfxItemSet& rItemSet,
        ValueSet& rVsPos, MetricField& rMfSize, ColorListBox& rLbColor );
        ValueSet& rVsPos, MetricField& rMfSize, SvxColorListBox& rLbColor );


}
diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index d1b7b8b..15a1020 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -1348,10 +1348,10 @@ void SvxCharNamePage::PageCreated(const SfxAllItemSet& aSet)

SvxCharEffectsPage::SvxCharEffectsPage( vcl::Window* pParent, const SfxItemSet& rInSet )
    : SvxCharBasePage(pParent, "EffectsPage", "cui/ui/effectspage.ui", rInSet)
    , m_aTransparentColorName(CUI_RES(RID_SVXSTR_CHARNAME_TRANSPARENT))
{
    get(m_pFontColorFT, "fontcolorft");
    get(m_pFontColorLB, "fontcolorlb");
    m_pFontColorLB->SetSlotId(SID_ATTR_CHAR_COLOR);
    get(m_pEffectsFT, "effectsft");
    get(m_pEffectsLB, "effectslb");
    get(m_pReliefFT, "reliefft");
@@ -1363,10 +1363,12 @@ SvxCharEffectsPage::SvxCharEffectsPage( vcl::Window* pParent, const SfxItemSet& 
    get(m_pOverlineLB, "overlinelb");
    get(m_pOverlineColorFT, "overlinecolorft");
    get(m_pOverlineColorLB, "overlinecolorlb");
    m_pOverlineColorLB->SetSlotId(SID_ATTR_CHAR_COLOR);
    get(m_pStrikeoutLB, "strikeoutlb");
    get(m_pUnderlineLB, "underlinelb");
    get(m_pUnderlineColorFT, "underlinecolorft");
    get(m_pUnderlineColorLB, "underlinecolorlb");
    m_pUnderlineColorLB->SetSlotId(SID_ATTR_CHAR_COLOR);
    get(m_pIndividualWordsBtn, "individualwordscb");
    get(m_pEmphasisFT, "emphasisft");
    get(m_pEmphasisLB, "emphasislb");
@@ -1431,55 +1433,14 @@ void SvxCharEffectsPage::Initialize()
        }
    }

    // fill the color box
    SfxObjectShell* pDocSh = SfxObjectShell::Current();
    DBG_ASSERT( pDocSh, "DocShell not found!" );
    XColorListRef pColorTable;

    if ( pDocSh )
    {
        pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem != nullptr )
            pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
    }

    if ( !pColorTable.is() )
        pColorTable = XColorList::CreateStdColorList();

    m_pUnderlineColorLB->SetUpdateMode( false );
    m_pOverlineColorLB->SetUpdateMode( false );
    m_pFontColorLB->SetUpdateMode( false );

    {
        std::unique_ptr<SfxPoolItem> pDummy;
        SfxViewFrame* pFrame = SfxViewFrame::GetFirst( pDocSh );
        if ( !pFrame ||
             SfxItemState::DEFAULT > pFrame->GetBindings().QueryState( SID_ATTR_AUTO_COLOR_INVALID, pDummy ) )
        {
            m_pUnderlineColorLB->InsertAutomaticEntryColor( Color( COL_AUTO ) );
            m_pOverlineColorLB->InsertAutomaticEntryColor( Color( COL_AUTO ) );
            m_pFontColorLB->InsertAutomaticEntryColor( Color( COL_AUTO ) );
        }
    }
    for ( long i = 0; i < pColorTable->Count(); i++ )
    {
        const XColorEntry* pEntry = pColorTable->GetColor(i);
        m_pUnderlineColorLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        m_pOverlineColorLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        m_pFontColorLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
    }

    m_pUnderlineColorLB->SetUpdateMode( true );
    m_pOverlineColorLB->SetUpdateMode( true );
    m_pFontColorLB->SetUpdateMode( true );
    m_pFontColorLB->SetSelectHdl( LINK( this, SvxCharEffectsPage, ColorBoxSelectHdl_Impl ) );
    m_pFontColorLB->SetSelectHdl(LINK(this, SvxCharEffectsPage, ColorBoxSelectHdl_Impl));

    // handler
    Link<ListBox&,void> aLink = LINK( this, SvxCharEffectsPage, SelectListBoxHdl_Impl );
    m_pUnderlineLB->SetSelectHdl( aLink );
    m_pUnderlineColorLB->SetSelectHdl( aLink );
    m_pUnderlineColorLB->SetSelectHdl(LINK(this, SvxCharEffectsPage, ColorBoxSelectHdl_Impl));
    m_pOverlineLB->SetSelectHdl( aLink );
    m_pOverlineColorLB->SetSelectHdl( aLink );
    m_pOverlineColorLB->SetSelectHdl(LINK(this, SvxCharEffectsPage, ColorBoxSelectHdl_Impl));
    m_pStrikeoutLB->SetSelectHdl( aLink );
    m_pEmphasisLB->SetSelectHdl( aLink );
    m_pPositionLB->SetSelectHdl( aLink );
@@ -1487,9 +1448,7 @@ void SvxCharEffectsPage::Initialize()
    m_pReliefLB->SetSelectHdl( aLink );

    m_pUnderlineLB->SelectEntryPos( 0 );
    m_pUnderlineColorLB->SelectEntryPos( 0 );
    m_pOverlineLB->SelectEntryPos( 0 );
    m_pOverlineColorLB->SelectEntryPos( 0 );
    m_pStrikeoutLB->SelectEntryPos( 0 );
    m_pEmphasisLB->SelectEntryPos( 0 );
    m_pPositionLB->SelectEntryPos( 0 );
@@ -1520,6 +1479,11 @@ void SvxCharEffectsPage::UpdatePreview_Impl()
    SvxFont& rCJKFont = GetPreviewCJKFont();
    SvxFont& rCTLFont = GetPreviewCTLFont();

    const Color& rSelectedColor = m_pFontColorLB->GetSelectEntryColor();
    rFont.SetColor(rSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : rSelectedColor);
    rCJKFont.SetColor(rSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : rSelectedColor);
    rCTLFont.SetColor(rSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : rSelectedColor);

    sal_Int32 nPos = m_pUnderlineLB->GetSelectEntryPos();
    FontLineStyle eUnderline = (FontLineStyle)reinterpret_cast<sal_uLong>(m_pUnderlineLB->GetEntryData( nPos ));
    nPos = m_pOverlineLB->GetSelectEntryPos();
@@ -1547,7 +1511,7 @@ void SvxCharEffectsPage::UpdatePreview_Impl()
    rCTLFont.SetEmphasisMark( eMark );

    sal_Int32 nRelief = m_pReliefLB->GetSelectEntryPos();
    if(LISTBOX_ENTRY_NOTFOUND != nRelief)
    if (LISTBOX_ENTRY_NOTFOUND != nRelief)
    {
        rFont.SetRelief( (FontRelief)nRelief );
        rCJKFont.SetRelief( (FontRelief)nRelief );
@@ -1631,71 +1595,38 @@ void SvxCharEffectsPage::ResetColor_Impl( const SfxItemSet& rSet )
            rCTLFont.SetColor( aColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aColor );

            m_pPreviewWin->Invalidate();
            sal_Int32 nSelPos = m_pFontColorLB->GetEntryPos( aColor );
            if ( nSelPos == LISTBOX_ENTRY_NOTFOUND && aColor == Color( COL_TRANSPARENT ) )
                nSelPos = m_pFontColorLB->GetEntryPos( m_aTransparentColorName );

            if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
                m_pFontColorLB->SelectEntryPos( nSelPos );
            else
            {
                nSelPos = m_pFontColorLB->GetEntryPos( aColor );
                if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
                    m_pFontColorLB->SelectEntryPos( nSelPos );
                else
                    m_pFontColorLB->SelectEntryPos(
                        m_pFontColorLB->InsertEntry( aColor, OUString( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
            }
            m_pFontColorLB->SelectEntry(aColor);
            break;
        }
    }
}


bool SvxCharEffectsPage::FillItemSetColor_Impl( SfxItemSet& rSet )
{
    sal_uInt16 nWhich = GetWhich( SID_ATTR_CHAR_COLOR );
    const SvxColorItem* pOld = static_cast<const SvxColorItem*>(GetOldItem( rSet, SID_ATTR_CHAR_COLOR ));
    const SvxColorItem* pItem = nullptr;
    bool bChanged = true;
    const SfxItemSet* pExampleSet = GetTabDialog() ? GetTabDialog()->GetExampleSet() : nullptr;
    const SfxItemSet& rOldSet = GetItemSet();

    Color aSelectedColor;
    if ( m_pFontColorLB->GetSelectEntry() == m_aTransparentColorName )
        aSelectedColor = Color( COL_TRANSPARENT );
    else
        aSelectedColor = m_pFontColorLB->GetSelectEntryColor();
    Color aSelectedColor = m_pFontColorLB->GetSelectEntryColor();

    if ( pOld && pOld->GetValue() == aSelectedColor )
    if (pOld && pOld->GetValue() == aSelectedColor)
        bChanged = false;

    if ( !bChanged )
        bChanged = ( m_pFontColorLB->GetSavedValue() == LISTBOX_ENTRY_NOTFOUND );

    if ( !bChanged && pExampleSet &&
         pExampleSet->GetItemState( nWhich, false, reinterpret_cast<const SfxPoolItem**>(&pItem) ) == SfxItemState::SET &&
         pItem->GetValue() != aSelectedColor )
        bChanged = true;

    bool bModified = false;

    if ( bChanged && m_pFontColorLB->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
    {
    if (bChanged)
        rSet.Put( SvxColorItem( aSelectedColor, nWhich ) );
        bModified = true;
    }
    else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) )
        CLEARTITEM;

    return bModified;
    return bChanged;
}


IMPL_LINK( SvxCharEffectsPage, SelectListBoxHdl_Impl, ListBox&, rBox, void )
{
    SelectHdl_Impl(&rBox);
}

void SvxCharEffectsPage::SelectHdl_Impl( ListBox* pBox )
{
    if ( m_pEmphasisLB == pBox )
@@ -1751,26 +1682,11 @@ IMPL_LINK_NOARG(SvxCharEffectsPage, TristClickHdl_Impl, Button*, void)
}


IMPL_LINK( SvxCharEffectsPage, ColorBoxSelectHdl_Impl, ListBox&, rListBox, void )
IMPL_LINK_NOARG(SvxCharEffectsPage, ColorBoxSelectHdl_Impl, SvxColorListBox&, void)
{
    ColorListBox* pBox = static_cast<ColorListBox*>(&rListBox);
    SvxFont& rFont = GetPreviewFont();
    SvxFont& rCJKFont = GetPreviewCJKFont();
    SvxFont& rCTLFont = GetPreviewCTLFont();

    Color aSelectedColor;
    if ( pBox->GetSelectEntry() == m_aTransparentColorName )
        aSelectedColor = Color( COL_TRANSPARENT );
    else
        aSelectedColor = pBox->GetSelectEntryColor();
    rFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
    rCJKFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );
    rCTLFont.SetColor( aSelectedColor.GetColor() == COL_AUTO ? Color(COL_BLACK) : aSelectedColor );

    m_pPreviewWin->Invalidate();
    UpdatePreview_Impl();
}


DeactivateRC SvxCharEffectsPage::DeactivatePage( SfxItemSet* _pSet )
{
    if ( _pSet )
@@ -1827,24 +1743,11 @@ void SvxCharEffectsPage::Reset( const SfxItemSet* rSet )
                }

                Color aColor = rItem.GetColor();
                sal_Int32 nPos = m_pUnderlineColorLB->GetEntryPos( aColor );

                if ( LISTBOX_ENTRY_NOTFOUND != nPos )
                    m_pUnderlineColorLB->SelectEntryPos( nPos );
                else
                {
                    nPos = m_pUnderlineColorLB->GetEntryPos( aColor );
                    if ( LISTBOX_ENTRY_NOTFOUND != nPos )
                        m_pUnderlineColorLB->SelectEntryPos( nPos );
                    else
                        m_pUnderlineColorLB->SelectEntryPos(
                            m_pUnderlineColorLB->InsertEntry( aColor,
                                OUString( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
                }
                m_pUnderlineColorLB->SelectEntry(aColor);
            }
            else
            {
                m_pUnderlineColorLB->SelectEntry( Color( COL_AUTO ));
                m_pUnderlineColorLB->SelectEntry(Color(COL_AUTO));
                m_pUnderlineColorLB->Disable();
            }
        }
@@ -1884,24 +1787,11 @@ void SvxCharEffectsPage::Reset( const SfxItemSet* rSet )
                }

                Color aColor = rItem.GetColor();
                sal_Int32 nPos = m_pOverlineColorLB->GetEntryPos( aColor );

                if ( LISTBOX_ENTRY_NOTFOUND != nPos )
                    m_pOverlineColorLB->SelectEntryPos( nPos );
                else
                {
                    nPos = m_pOverlineColorLB->GetEntryPos( aColor );
                    if ( LISTBOX_ENTRY_NOTFOUND != nPos )
                        m_pOverlineColorLB->SelectEntryPos( nPos );
                    else
                        m_pOverlineColorLB->SelectEntryPos(
                            m_pOverlineColorLB->InsertEntry( aColor,
                                OUString( SVX_RES( RID_SVXSTR_COLOR_USER ) ) ) );
                }
                m_pOverlineColorLB->SelectEntry(aColor);
            }
            else
            {
                m_pOverlineColorLB->SelectEntry( Color( COL_AUTO ));
                m_pOverlineColorLB->SelectEntry(Color(COL_AUTO));
                m_pOverlineColorLB->Disable();
            }
        }
@@ -2214,12 +2104,10 @@ void SvxCharEffectsPage::Reset( const SfxItemSet* rSet )
    ChangesApplied();
}

void  SvxCharEffectsPage::ChangesApplied()
void SvxCharEffectsPage::ChangesApplied()
{
    m_pUnderlineLB->SaveValue();
    m_pUnderlineColorLB->SaveValue();
    m_pOverlineLB->SaveValue();
    m_pOverlineColorLB->SaveValue();
    m_pStrikeoutLB->SaveValue();
    m_pIndividualWordsBtn->SaveValue();
    m_pEmphasisLB->SaveValue();
@@ -2231,10 +2119,8 @@ void  SvxCharEffectsPage::ChangesApplied()
    m_pBlinkingBtn->SaveValue();
    m_pHiddenBtn->SaveValue();
    m_pFontColorLB->SaveValue();

}


bool SvxCharEffectsPage::FillItemSet( SfxItemSet* rSet )
{
    const SfxPoolItem* pOld = nullptr;
@@ -2305,7 +2191,7 @@ bool SvxCharEffectsPage::FillItemSet( SfxItemSet* rSet )
        rSet->Put( aNewItem );
        bModified = true;
    }
     else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) )
    else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) )
        rSet->InvalidateItem(nWhich);

    bChanged = true;
diff --git a/cui/source/tabpages/numpages.cxx b/cui/source/tabpages/numpages.cxx
index 5846d9e..8872024 100644
--- a/cui/source/tabpages/numpages.cxx
+++ b/cui/source/tabpages/numpages.cxx
@@ -31,6 +31,7 @@
#include <svl/eitem.hxx>
#include <vcl/layout.hxx>
#include <vcl/svapp.hxx>
#include <svx/colorbox.hxx>
#include <svx/gallery.hxx>
#include <svl/urihelper.hxx>
#include <editeng/brushitem.hxx>
@@ -1109,6 +1110,7 @@ SvxNumOptionsTabPage::SvxNumOptionsTabPage(vcl::Window* pParent,

    get(m_pBulColorFT, "colorft");
    get(m_pBulColLB, "color");
    m_pBulColLB->SetSlotId(SID_ATTR_CHAR_COLOR);

    get(m_pBulRelSizeFT, "relsizeft");
    get(m_pBulRelSizeMF, "relsize");
@@ -1374,31 +1376,6 @@ void    SvxNumOptionsTabPage::Reset( const SfxItemSet* rSet )
    m_pPreviewWIN->SetNumRule(pActNum);
    m_pSameLevelCB->Check(pActNum->IsContinuousNumbering());

    // fill ColorListBox as needed
    if ( pActNum->IsFeatureSupported( SvxNumRuleFlags::BULLET_COLOR ) )
    {
        SfxObjectShell* pDocSh = SfxObjectShell::Current();
        DBG_ASSERT( pDocSh, "DocShell not found!" );
        XColorListRef pColorTable;
        if ( pDocSh )
        {
            pItem = pDocSh->GetItem( SID_COLOR_TABLE );
            if ( pItem )
                pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
        }

        if ( !pColorTable.is() )
            pColorTable = XColorList::CreateStdColorList();

        m_pBulColLB->InsertEntry( Color( COL_AUTO ), SVX_RESSTR( RID_SVXSTR_AUTOMATIC ));

        for ( long i = 0; i < pColorTable->Count(); i++ )
        {
            const XColorEntry* pEntry = pColorTable->GetColor(i);
            m_pBulColLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        }
    }

    SfxObjectShell* pShell;
    if ( SfxItemState::SET == rSet->GetItemState( SID_HTML_MODE, false, &pItem )
         || ( nullptr != ( pShell = SfxObjectShell::Current()) &&
@@ -1928,10 +1905,9 @@ IMPL_LINK( SvxNumOptionsTabPage, SameLevelHdl_Impl, Button*, pBox, void )
    InitControls();
}

IMPL_LINK( SvxNumOptionsTabPage, BulColorHdl_Impl, ListBox&, rListBox, void )
IMPL_LINK(SvxNumOptionsTabPage, BulColorHdl_Impl, SvxColorListBox&, rColorBox, void)
{
    ColorListBox* pBox = static_cast<ColorListBox*>(&rListBox);
    Color nSetColor = pBox->GetSelectEntryColor();
    Color nSetColor = rColorBox.GetSelectEntryColor();

    sal_uInt16 nMask = 1;
    for(sal_uInt16 i = 0; i < pActNum->GetLevelCount(); i++)
diff --git a/cui/source/tabpages/strings.src b/cui/source/tabpages/strings.src
index 2bf8809..0b296d6 100644
--- a/cui/source/tabpages/strings.src
+++ b/cui/source/tabpages/strings.src
@@ -87,10 +87,6 @@ String RID_SVXSTR_DESC_LINEEND
{
    Text [ en-US ] = "Please enter a name for the new arrowhead:" ;
};
String RID_SVXSTR_CHARNAME_TRANSPARENT
{
    Text [ en-US ] = "Transparent";
};
String RID_SVXSTR_CHARNAME_NOSTYLE
{
    Text [ en-US ] = "No %1";
diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx
index e28e177..7aac0c7 100644
--- a/cui/source/tabpages/tpgradnt.cxx
+++ b/cui/source/tabpages/tpgradnt.cxx
@@ -28,6 +28,7 @@

#include <cuires.hrc>
#include "helpid.hrc"
#include <svx/colorbox.hxx>
#include "svx/xattr.hxx"
#include <svx/xtable.hxx>
#include <svx/xpool.hxx>
@@ -124,9 +125,10 @@ SvxGradientTabPage::SvxGradientTabPage
    m_pMtrBorder->SetModifyHdl( aLink );
    m_pSliderBorder->SetSlideHdl( LINK( this, SvxGradientTabPage, ModifiedSliderHdl_Impl ) );
    m_pMtrColorFrom->SetModifyHdl( aLink );
    m_pLbColorFrom->SetSelectHdl( aLink2 );
    Link<SvxColorListBox&,void> aLink3 = LINK( this, SvxGradientTabPage, ModifiedColorListBoxHdl_Impl );
    m_pLbColorFrom->SetSelectHdl( aLink3 );
    m_pMtrColorTo->SetModifyHdl( aLink );
    m_pLbColorTo->SetSelectHdl( aLink2 );
    m_pLbColorTo->SetSelectHdl( aLink3 );

    // #i76307# always paint the preview in LTR, because this is what the document does
    m_pCtlPreview->EnableRTL( false );
@@ -163,21 +165,13 @@ void SvxGradientTabPage::dispose()
    SfxTabPage::dispose();
}


void SvxGradientTabPage::Construct()
{
    m_pLbColorFrom->Fill( m_pColorList );
    m_pLbColorTo->CopyEntries( *m_pLbColorFrom );

    m_pGradientLB->FillPresetListBox( *m_pGradientList );
}


void SvxGradientTabPage::ActivatePage( const SfxItemSet& rSet )
{
    sal_Int32 nPos;
    sal_Int32 nCount;

    if( m_pColorList.is() )
    {
        // ColorList
@@ -189,30 +183,6 @@ void SvxGradientTabPage::ActivatePage( const SfxItemSet& rSet )
            if (pArea)
                m_pColorList = pArea->GetNewColorList();

            // LbColorFrom
            nPos = m_pLbColorFrom->GetSelectEntryPos();
            m_pLbColorFrom->Clear();
            m_pLbColorFrom->Fill( m_pColorList );
            nCount = m_pLbColorFrom->GetEntryCount();
            if( nCount == 0 )
                ; // this case should not occur
            else if( nCount <= nPos )
                m_pLbColorFrom->SelectEntryPos( 0 );
            else
                m_pLbColorFrom->SelectEntryPos( nPos );

            // LbColorTo
            nPos = m_pLbColorTo->GetSelectEntryPos();
            m_pLbColorTo->Clear();
            m_pLbColorTo->CopyEntries( *m_pLbColorFrom );
            nCount = m_pLbColorTo->GetEntryCount();
            if( nCount == 0 )
                ; // this case should not occur
            else if( nCount <= nPos )
                m_pLbColorTo->SelectEntryPos( 0 );
            else
                m_pLbColorTo->SelectEntryPos( nPos );

            ModifiedHdl_Impl( this );
        }

@@ -310,12 +280,16 @@ VclPtr<SfxTabPage> SvxGradientTabPage::Create( vcl::Window* pWindow,
    return VclPtr<SvxGradientTabPage>::Create( pWindow, *rOutAttrs );
}


IMPL_LINK( SvxGradientTabPage, ModifiedListBoxHdl_Impl, ListBox&, rListBox, void )
{
    ModifiedHdl_Impl(&rListBox);
}

IMPL_LINK( SvxGradientTabPage, ModifiedColorListBoxHdl_Impl, SvxColorListBox&, rListBox, void )
{
    ModifiedHdl_Impl(&rListBox);
}

IMPL_LINK( SvxGradientTabPage, ModifiedEditHdl_Impl, Edit&, rBox, void )
{
    ModifiedHdl_Impl(&rBox);
@@ -617,21 +591,9 @@ void SvxGradientTabPage::ChangeGradientHdl_Impl()
        m_pLbColorFrom->SetNoSelection();
        m_pLbColorFrom->SelectEntry( pGradient->GetStartColor() );

        if ( m_pLbColorFrom->GetSelectEntryCount() == 0 )
        {
            m_pLbColorFrom->InsertEntry( pGradient->GetStartColor(),
                                      OUString() );
            m_pLbColorFrom->SelectEntry( pGradient->GetStartColor() );
        }
        m_pLbColorTo->SetNoSelection();
        m_pLbColorTo->SelectEntry( pGradient->GetEndColor() );

        if ( m_pLbColorTo->GetSelectEntryCount() == 0 )
        {
            m_pLbColorTo->InsertEntry( pGradient->GetEndColor(), OUString() );
            m_pLbColorTo->SelectEntry( pGradient->GetEndColor() );
        }

        m_pMtrAngle->SetValue( pGradient->GetAngle() / 10 ); // should be changed in resource
        m_pMtrBorder->SetValue( pGradient->GetBorder() );
        m_pSliderBorder->SetThumbPos( pGradient->GetBorder() );
diff --git a/cui/source/tabpages/tphatch.cxx b/cui/source/tabpages/tphatch.cxx
index 1f4fa52..31efad7 100644
--- a/cui/source/tabpages/tphatch.cxx
+++ b/cui/source/tabpages/tphatch.cxx
@@ -29,6 +29,7 @@

#include <cuires.hrc>
#include "helpid.hrc"
#include <svx/colorbox.hxx>
#include "svx/xattr.hxx"
#include <svx/xpool.hxx>
#include <svx/xtable.hxx>
@@ -118,7 +119,8 @@ SvxHatchTabPage::SvxHatchTabPage
    m_pMtrAngle->SetModifyHdl( aLink );
    m_pSliderAngle->SetSlideHdl( LINK( this, SvxHatchTabPage, ModifiedSliderHdl_Impl ) );
    m_pLbLineType->SetSelectHdl( aLink2 );
    m_pLbLineColor->SetSelectHdl( aLink2 );
    Link<SvxColorListBox&,void> aLink3 = LINK( this, SvxHatchTabPage, ModifiedColorListBoxHdl_Impl );
    m_pLbLineColor->SetSelectHdl( aLink3 );
    m_pCbBackgroundColor->SetToggleHdl( LINK( this, SvxHatchTabPage, ToggleHatchBackgroundColor_Impl ) );
    m_pLbBackgroundColor->SetSelectHdl( LINK( this, SvxHatchTabPage, ModifiedBackgroundHdl_Impl ) );

@@ -150,20 +152,13 @@ void SvxHatchTabPage::dispose()
    SvxTabPage::dispose();
}


void SvxHatchTabPage::Construct()
{
    m_pLbLineColor->Fill( m_pColorList );
    m_pLbBackgroundColor->Fill( m_pColorList );
    m_pHatchLB->FillPresetListBox(*m_pHatchingList);
}


void SvxHatchTabPage::ActivatePage( const SfxItemSet& rSet )
{
    sal_Int32 nPos;
    sal_Int32 nCount;

    if( m_pColorList.is() )
    {
        // ColorList
@@ -175,18 +170,6 @@ void SvxHatchTabPage::ActivatePage( const SfxItemSet& rSet )
            if (pArea)
                m_pColorList = pArea->GetNewColorList();

            // LbLineColor
            nPos = m_pLbLineColor->GetSelectEntryPos();
            m_pLbLineColor->Clear();
            m_pLbLineColor->Fill( m_pColorList );
            nCount = m_pLbLineColor->GetEntryCount();
            if( nCount == 0 )
                ; // this case should not occur
            else if( nCount <= nPos )
                m_pLbLineColor->SelectEntryPos( 0 );
            else
                m_pLbLineColor->SelectEntryPos( nPos );

            ModifiedHdl_Impl( this );
        }

@@ -228,12 +211,6 @@ void SvxHatchTabPage::ActivatePage( const SfxItemSet& rSet )
        Color aColor(aColorItem.GetColorValue());
        m_pLbBackgroundColor->Enable();
        m_pLbBackgroundColor->SelectEntry(aColor);

        if( m_pLbBackgroundColor->GetSelectEntryCount() == 0 )
        {
            m_pLbBackgroundColor->InsertEntry( aColor , OUString() );
            m_pLbBackgroundColor->SelectEntry( aColor );
        }
        m_rXFSet.Put( aColorItem );
    }
    else
@@ -295,15 +272,10 @@ bool SvxHatchTabPage::FillItemSet( SfxItemSet* rSet )
    rSet->Put( XFillStyleItem( drawing::FillStyle_HATCH ) );
    rSet->Put( XFillHatchItem( aString, *pXHatch ) );
    rSet->Put( XFillBackgroundItem( m_pCbBackgroundColor->IsChecked() ) );
    if(m_pCbBackgroundColor->IsChecked())
    if (m_pCbBackgroundColor->IsChecked())
    {
        sal_uInt32 nPosBckColor = m_pLbBackgroundColor->GetSelectEntryPos();
        OUString aBckColorString;
        if( nPosBckColor != LISTBOX_ENTRY_NOTFOUND )
            aBckColorString = m_pLbBackgroundColor->GetSelectEntry();
        else
            aBckColorString = OUString();
        rSet->Put( XFillColorItem( aBckColorString, m_pLbBackgroundColor->GetSelectEntryColor() ) );
        NamedColor aColor = m_pLbBackgroundColor->GetSelectEntry();
        rSet->Put(XFillColorItem(aColor.second, aColor.first));
    }
    return true;
}
@@ -335,12 +307,16 @@ VclPtr<SfxTabPage> SvxHatchTabPage::Create( vcl::Window* pWindow,
    return VclPtr<SvxHatchTabPage>::Create( pWindow, *rSet );
}


IMPL_LINK( SvxHatchTabPage, ModifiedListBoxHdl_Impl, ListBox&, rListBox, void )
{
    ModifiedHdl_Impl(&rListBox);
}

IMPL_LINK( SvxHatchTabPage, ModifiedColorListBoxHdl_Impl, SvxColorListBox&, rListBox, void )
{
    ModifiedHdl_Impl(&rListBox);
}

IMPL_LINK_NOARG( SvxHatchTabPage, ToggleHatchBackgroundColor_Impl, CheckBox&, void )
{
    if(m_pCbBackgroundColor->IsChecked())
@@ -351,7 +327,7 @@ IMPL_LINK_NOARG( SvxHatchTabPage, ToggleHatchBackgroundColor_Impl, CheckBox&, vo
    ModifiedBackgroundHdl_Impl(*m_pLbBackgroundColor);
}

IMPL_LINK_NOARG( SvxHatchTabPage, ModifiedBackgroundHdl_Impl, ListBox&, void )
IMPL_LINK_NOARG( SvxHatchTabPage, ModifiedBackgroundHdl_Impl, SvxColorListBox&, void )
{
    Color aColor(COL_TRANSPARENT);
    if(m_pCbBackgroundColor->IsChecked())
@@ -429,15 +405,8 @@ void SvxHatchTabPage::ChangeHatchHdl_Impl()
    {
        m_pLbLineType->SelectEntryPos(
            sal::static_int_cast< sal_Int32 >( pHatch->GetHatchStyle() ) );
        // if the entry is not in the listbox
        // the color is added temporarily
        m_pLbLineColor->SetNoSelection();
        m_pLbLineColor->SelectEntry( pHatch->GetColor() );
        if( m_pLbLineColor->GetSelectEntryCount() == 0 )
        {
            m_pLbLineColor->InsertEntry( pHatch->GetColor(), OUString() );
            m_pLbLineColor->SelectEntry( pHatch->GetColor() );
        }
        SetMetricValue( *m_pMtrDistance, pHatch->GetDistance(), m_ePoolUnit );
        long mHatchAngle = pHatch->GetAngle() / 10;
        m_pMtrAngle->SetValue( mHatchAngle );
diff --git a/cui/source/tabpages/tpline.cxx b/cui/source/tabpages/tpline.cxx
index 11ffd61..3172081 100644
--- a/cui/source/tabpages/tpline.cxx
+++ b/cui/source/tabpages/tpline.cxx
@@ -24,6 +24,7 @@
#include <sfx2/module.hxx>

#include <cuires.hrc>
#include <svx/colorbox.hxx>
#include "svx/xattr.hxx"
#include <svx/xpool.hxx>
#include <svx/xtable.hxx>
@@ -268,8 +269,6 @@ void SvxLineTabPage::dispose()

void SvxLineTabPage::Construct()
{
    // Color chart
    m_pLbColor->Fill( m_pColorList );
    FillListboxes();
}

@@ -641,17 +640,6 @@ void SvxLineTabPage::ActivatePage( const SfxItemSet& rSet )
            {
                if( *m_pnColorListState & ChangeType::CHANGED )
                    m_pColorList = static_cast<SvxLineTabDialog*>( GetParentDialog() )->GetNewColorList();
                // aLbColor
                sal_Int32 nColorPos = m_pLbColor->GetSelectEntryPos();
                m_pLbColor->Clear();
                m_pLbColor->Fill( m_pColorList );
                nCount = m_pLbColor->GetEntryCount();
                if( nCount == 0 )
                    ; // This case should never occur
                else if( nCount <= nColorPos )
                    m_pLbColor->SelectEntryPos( 0 );
                else
                    m_pLbColor->SelectEntryPos( nColorPos );

                ChangePreviewHdl_Impl( nullptr );
            }
@@ -767,9 +755,9 @@ bool SvxLineTabPage::FillItemSet( SfxItemSet* rAttrs )
    }

    // Line color
    if( m_pLbColor->IsValueChangedFromSaved() )
    {
        XLineColorItem aItem( m_pLbColor->GetSelectEntry(), m_pLbColor->GetSelectEntryColor() );
        NamedColor aColor = m_pLbColor->GetSelectEntry();
        XLineColorItem aItem(aColor.second, aColor.first);
        pOld = GetOldItem( *rAttrs, XATTR_LINECOLOR );
        if ( !pOld || !( *static_cast<const XLineColorItem*>(pOld) == aItem ) )
        {
@@ -1070,7 +1058,8 @@ void SvxLineTabPage::FillXLSet_Impl()
    m_rXLSet.Put( XLineEndWidthItem( GetCoreValue( *m_pMtrEndWidth, m_ePoolUnit ) ) );

    m_rXLSet.Put( XLineWidthItem( GetCoreValue( *m_pMtrLineWidth, m_ePoolUnit ) ) );
    m_rXLSet.Put( XLineColorItem( m_pLbColor->GetSelectEntry(), m_pLbColor->GetSelectEntryColor() ) );
    NamedColor aColor = m_pLbColor->GetSelectEntry();
    m_rXLSet.Put(XLineColorItem(aColor.second, aColor.first));

    // Centered line end
    if( m_pTsbCenterStart->GetState() == TRISTATE_TRUE )
@@ -1260,11 +1249,6 @@ void SvxLineTabPage::Reset( const SfxItemSet* rAttrs )
    {
        Color aCol = static_cast<const XLineColorItem&>( rAttrs->Get( XATTR_LINECOLOR ) ).GetColorValue();
        m_pLbColor->SelectEntry( aCol );
        if( m_pLbColor->GetSelectEntryCount() == 0 )
        {
            m_pLbColor->InsertEntry( aCol, OUString() );
            m_pLbColor->SelectEntry( aCol );
        }
    }

    // Line start
@@ -1498,11 +1482,11 @@ VclPtr<SfxTabPage> SvxLineTabPage::Create( vcl::Window* pWindow,
    return VclPtr<SvxLineTabPage>::Create( pWindow, *rAttrs );
}


IMPL_LINK( SvxLineTabPage, ChangePreviewListBoxHdl_Impl, ListBox&, rListBox, void )
IMPL_LINK( SvxLineTabPage, ChangePreviewListBoxHdl_Impl, SvxColorListBox&, rListBox, void )
{
    ChangePreviewHdl_Impl(&rListBox);
}

IMPL_LINK( SvxLineTabPage, ChangePreviewModifyHdl_Impl, Edit&, rEdit, void )
{
    ChangePreviewHdl_Impl(&rEdit);
diff --git a/cui/source/tabpages/tppattern.cxx b/cui/source/tabpages/tppattern.cxx
index 253b198..cb4c7a3 100644
--- a/cui/source/tabpages/tppattern.cxx
+++ b/cui/source/tabpages/tppattern.cxx
@@ -27,6 +27,7 @@
#include <sfx2/filedlghelper.hxx>
#include <unotools/localfilehelper.hxx>
#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
#include <svx/colorbox.hxx>
#include <svx/dialmgr.hxx>
#include <vcl/bitmapaccess.hxx>
#include <vcl/settings.hxx>
@@ -158,17 +159,11 @@ void SvxPatternTabPage::dispose()

void SvxPatternTabPage::Construct()
{
    m_pLbColor->Fill( m_pColorList );
    m_pLbBackgroundColor->CopyEntries( *m_pLbColor );
    m_pPatternLB->FillPresetListBox( *m_pPatternList );
}


void SvxPatternTabPage::ActivatePage( const SfxItemSet& rSet )
{
    sal_Int32 nPos;
    sal_Int32 nCount;

    if( m_pColorList.is() )
    {
        // ColorList
@@ -179,30 +174,6 @@ void SvxPatternTabPage::ActivatePage( const SfxItemSet& rSet )
                dynamic_cast<SvxAreaTabDialog*>(GetParentDialog()) : nullptr;
            if (pArea)
                m_pColorList = pArea->GetNewColorList();

            // LbColor
            nPos = m_pLbColor->GetSelectEntryPos();
            m_pLbColor->Clear();
            m_pLbColor->Fill( m_pColorList );
            nCount = m_pLbColor->GetEntryCount();
            if( nCount == 0 )
                ; // this case should not occur
            else if( nCount <= nPos )
                m_pLbColor->SelectEntryPos( 0 );
            else
                m_pLbColor->SelectEntryPos( nPos );

            // LbColorBackground
            nPos = m_pLbBackgroundColor->GetSelectEntryPos();
            m_pLbBackgroundColor->Clear();
            m_pLbBackgroundColor->CopyEntries( *m_pLbColor );
            nCount = m_pLbBackgroundColor->GetEntryCount();
            if( nCount == 0 )
                ; // this case should not occur
            else if( nCount <= nPos )
                m_pLbBackgroundColor->SelectEntryPos( 0 );
            else
                m_pLbBackgroundColor->SelectEntryPos( nPos );
        }

        // determining (possibly cutting) the name and
@@ -353,34 +324,9 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ChangePatternHdl_Impl, ValueSet*, void)
            Color aPixelColor = aFront;
            Color aBackColor = aBack;

            // #i123564# This causes the wrong color to be selected
            // as foreground color when the 1st bitmap in the bitmap
            // list is selected. I see no reason why this is done,
            // thus I will take it out

            //if( 0 == m_pLbBitmaps->GetSelectEntryPos() )
            //{
            //  m_pLbColor->SelectEntry( Color( COL_BLACK ) );
            //  ChangePixelColorHdl_Impl( this );
            //}
            //else

            m_pLbColor->SelectEntry( aPixelColor );

            if( m_pLbColor->GetSelectEntryCount() == 0 )
            {
                m_pLbColor->InsertEntry( aPixelColor, OUString() );
                m_pLbColor->SelectEntry( aPixelColor );
            }

            m_pLbBackgroundColor->SelectEntry( aBackColor );

            if( m_pLbBackgroundColor->GetSelectEntryCount() == 0 )
            {
                m_pLbBackgroundColor->InsertEntry( aBackColor, OUString() );
                m_pLbBackgroundColor->SelectEntry( aBackColor );
            }

            // update m_pBitmapCtl, rXFSet and m_pCtlPreview
            m_pBitmapCtl->SetPixelColor( aPixelColor );
            m_pBitmapCtl->SetBackgroundColor( aBackColor );
@@ -608,7 +554,7 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickDeleteHdl_Impl, SvxPresetListBox*, void)
    }
}

IMPL_LINK_NOARG(SvxPatternTabPage, ChangeColorHdl_Impl, ListBox&, void)
IMPL_LINK_NOARG(SvxPatternTabPage, ChangeColorHdl_Impl, SvxColorListBox&, void)
{
    ChangeColor_Impl();
}
diff --git a/cui/source/tabpages/tpshadow.cxx b/cui/source/tabpages/tpshadow.cxx
index d2b1dca..fa46ea2 100644
--- a/cui/source/tabpages/tpshadow.cxx
+++ b/cui/source/tabpages/tpshadow.cxx
@@ -19,6 +19,7 @@

#include <sfx2/app.hxx>
#include <sfx2/module.hxx>
#include <svx/colorbox.hxx>
#include <svx/dialogs.hrc>

#include "svx/xattr.hxx"
@@ -182,17 +183,8 @@ void SvxShadowTabPage::dispose()
    SvxTabPage::dispose();
}

void SvxShadowTabPage::Construct()
{
    m_pLbShadowColor->Fill( m_pColorList );
}


void SvxShadowTabPage::ActivatePage( const SfxItemSet& rSet )
{
    sal_Int32 nPos;
    sal_Int32 nCount;

    const SfxUInt16Item* pPageTypeItem = rSet.GetItem<SfxUInt16Item>(SID_PAGE_TYPE, false);
    if (pPageTypeItem)
        SetPageType((PageType) pPageTypeItem->GetValue());
@@ -220,18 +212,6 @@ void SvxShadowTabPage::ActivatePage( const SfxItemSet& rSet )
                    }
                }

                // aLbShadowColor
                nPos = m_pLbShadowColor->GetSelectEntryPos();
                m_pLbShadowColor->Clear();
                m_pLbShadowColor->Fill( m_pColorList );
                nCount = m_pLbShadowColor->GetEntryCount();
                if( nCount == 0 )
                    ; // this case should not occur
                else if( nCount <= nPos )
                    m_pLbShadowColor->SelectEntryPos( 0 );
                else
                    m_pLbShadowColor->SelectEntryPos( nPos );

                SfxItemSet rAttribs( rSet );
                // rSet contains shadow attributes too, but we want
                // to use it for updating rectangle attributes only,
@@ -335,9 +315,6 @@ bool SvxShadowTabPage::FillItemSet( SfxItemSet* rAttrs )
    }

    // ShadowColor
    sal_Int32 nPos = m_pLbShadowColor->GetSelectEntryPos();
    if( nPos != LISTBOX_ENTRY_NOTFOUND &&
        m_pLbShadowColor->IsValueChangedFromSaved() )
    {
        XColorItem aItem(makeSdrShadowColorItem(m_pLbShadowColor->GetSelectEntryColor()));
        pOld = GetOldItem( *rAttrs, SDRATTR_SHADOWCOLOR );
@@ -488,11 +465,11 @@ IMPL_LINK_NOARG(SvxShadowTabPage, ClickShadowHdl_Impl, Button*, void)
    ModifyShadowHdl_Impl( *m_pMtrTransparent );
}


IMPL_LINK_NOARG(SvxShadowTabPage, SelectShadowHdl_Impl, ListBox&, void)
IMPL_LINK_NOARG(SvxShadowTabPage, SelectShadowHdl_Impl, SvxColorListBox&, void)
{
    ModifyShadowHdl_Impl(*m_pMtrTransparent);
}

IMPL_LINK_NOARG(SvxShadowTabPage, ModifyShadowHdl_Impl, Edit&, void)
{
    if( m_pTsbShowShadow->GetState() == TRISTATE_TRUE )
@@ -500,11 +477,7 @@ IMPL_LINK_NOARG(SvxShadowTabPage, ModifyShadowHdl_Impl, Edit&, void)
    else
        m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) );

    sal_Int32 nPos = m_pLbShadowColor->GetSelectEntryPos();
    if( nPos != LISTBOX_ENTRY_NOTFOUND )
    {
        m_rXFSet.Put( XFillColorItem( OUString(), m_pLbShadowColor->GetSelectEntryColor() ) );
    }
    m_rXFSet.Put( XFillColorItem( OUString(), m_pLbShadowColor->GetSelectEntryColor() ) );
    sal_uInt16 nVal = (sal_uInt16)m_pMtrTransparent->GetValue();
    XFillTransparenceItem aItem( nVal );
    m_rXFSet.Put( XFillTransparenceItem( aItem ) );
diff --git a/cui/uiconfig/ui/borderpage.ui b/cui/uiconfig/ui/borderpage.ui
index c783d26..2a3265c 100644
--- a/cui/uiconfig/ui/borderpage.ui
+++ b/cui/uiconfig/ui/borderpage.ui
@@ -233,7 +233,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svtlo-ColorListBox" id="linecolorlb">
                      <object class="svxlo-SvxColorListBox" id="linecolorlb">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                      </object>
@@ -505,7 +505,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="shadowcolorlb">
                  <object class="svxlo-SvxColorListBox" id="shadowcolorlb">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="halign">start</property>
diff --git a/cui/uiconfig/ui/colorconfigwin.ui b/cui/uiconfig/ui/colorconfigwin.ui
index d03daf7..f4dd177 100644
--- a/cui/uiconfig/ui/colorconfigwin.ui
+++ b/cui/uiconfig/ui/colorconfigwin.ui
@@ -38,7 +38,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="doccolor_lb">
      <object class="svxlo-SvxColorListBox" id="doccolor_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -72,7 +72,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="docboundaries_lb">
      <object class="svxlo-SvxColorListBox" id="docboundaries_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -98,7 +98,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="appback_lb">
      <object class="svxlo-SvxColorListBox" id="appback_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -148,7 +148,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="objboundaries_lb">
      <object class="svxlo-SvxColorListBox" id="objboundaries_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -185,7 +185,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="tblboundaries_lb">
      <object class="svxlo-SvxColorListBox" id="tblboundaries_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -220,7 +220,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="font_lb">
      <object class="svxlo-SvxColorListBox" id="font_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -257,7 +257,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="unvisitedlinks_lb">
      <object class="svxlo-SvxColorListBox" id="unvisitedlinks_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -294,7 +294,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="visitedlinks_lb">
      <object class="svxlo-SvxColorListBox" id="visitedlinks_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -354,7 +354,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="autospellcheck_lb">
      <object class="svxlo-SvxColorListBox" id="autospellcheck_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -364,7 +364,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="shadows_lb">
      <object class="svxlo-SvxColorListBox" id="shadows_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -374,7 +374,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="smarttags_lb">
      <object class="svxlo-SvxColorListBox" id="smarttags_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -400,7 +400,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="writergrid_lb">
      <object class="svxlo-SvxColorListBox" id="writergrid_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -435,7 +435,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="field_lb">
      <object class="svxlo-SvxColorListBox" id="field_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -457,7 +457,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="index_lb">
      <object class="svxlo-SvxColorListBox" id="index_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -479,7 +479,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="script_lb">
      <object class="svxlo-SvxColorListBox" id="script_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -559,7 +559,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="section_lb">
      <object class="svxlo-SvxColorListBox" id="section_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -581,7 +581,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="hdft_lb">
      <object class="svxlo-SvxColorListBox" id="hdft_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -616,7 +616,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="pagebreak_lb">
      <object class="svxlo-SvxColorListBox" id="pagebreak_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -651,7 +651,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="direct_lb">
      <object class="svxlo-SvxColorListBox" id="direct_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -702,7 +702,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sgml_lb">
      <object class="svxlo-SvxColorListBox" id="sgml_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -737,7 +737,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="htmlcomment_lb">
      <object class="svxlo-SvxColorListBox" id="htmlcomment_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -772,7 +772,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="htmlkeyword_lb">
      <object class="svxlo-SvxColorListBox" id="htmlkeyword_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -807,7 +807,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="unknown_lb">
      <object class="svxlo-SvxColorListBox" id="unknown_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -858,7 +858,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="calcgrid_lb">
      <object class="svxlo-SvxColorListBox" id="calcgrid_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -893,7 +893,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="brk_lb">
      <object class="svxlo-SvxColorListBox" id="brk_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -928,7 +928,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="brkmanual_lb">
      <object class="svxlo-SvxColorListBox" id="brkmanual_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -963,7 +963,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="brkauto_lb">
      <object class="svxlo-SvxColorListBox" id="brkauto_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -998,7 +998,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="det_lb">
      <object class="svxlo-SvxColorListBox" id="det_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1033,7 +1033,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="deterror_lb">
      <object class="svxlo-SvxColorListBox" id="deterror_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1068,7 +1068,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="ref_lb">
      <object class="svxlo-SvxColorListBox" id="ref_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1103,7 +1103,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="notes_lb">
      <object class="svxlo-SvxColorListBox" id="notes_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1154,7 +1154,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="drawgrid_lb">
      <object class="svxlo-SvxColorListBox" id="drawgrid_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1205,7 +1205,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="basicid_lb">
      <object class="svxlo-SvxColorListBox" id="basicid_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1240,7 +1240,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="basiccomment_lb">
      <object class="svxlo-SvxColorListBox" id="basiccomment_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1275,7 +1275,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="basicnumber_lb">
      <object class="svxlo-SvxColorListBox" id="basicnumber_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1310,7 +1310,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="basicstring_lb">
      <object class="svxlo-SvxColorListBox" id="basicstring_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1345,7 +1345,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="basicop_lb">
      <object class="svxlo-SvxColorListBox" id="basicop_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1380,7 +1380,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="basickeyword_lb">
      <object class="svxlo-SvxColorListBox" id="basickeyword_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1415,7 +1415,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="error_lb">
      <object class="svxlo-SvxColorListBox" id="error_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1466,7 +1466,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlid_lb">
      <object class="svxlo-SvxColorListBox" id="sqlid_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1501,7 +1501,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlnumber_lb">
      <object class="svxlo-SvxColorListBox" id="sqlnumber_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1536,7 +1536,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlstring_lb">
      <object class="svxlo-SvxColorListBox" id="sqlstring_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1571,7 +1571,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlop_lb">
      <object class="svxlo-SvxColorListBox" id="sqlop_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1606,7 +1606,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlkeyword_lb">
      <object class="svxlo-SvxColorListBox" id="sqlkeyword_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1641,7 +1641,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlparam_lb">
      <object class="svxlo-SvxColorListBox" id="sqlparam_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
@@ -1676,7 +1676,7 @@
      </packing>
    </child>
    <child>
      <object class="svtlo-ColorListBox" id="sqlcomment_lb">
      <object class="svxlo-SvxColorListBox" id="sqlcomment_lb">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
      </object>
diff --git a/cui/uiconfig/ui/effectspage.ui b/cui/uiconfig/ui/effectspage.ui
index 1e9171c..46a42cd 100644
--- a/cui/uiconfig/ui/effectspage.ui
+++ b/cui/uiconfig/ui/effectspage.ui
@@ -324,7 +324,7 @@
          </packing>
        </child>
        <child>
          <object class="svtlo-ColorListBox" id="fontcolorlb">
          <object class="svxlo-SvxColorListBox" id="fontcolorlb">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
          </object>
@@ -389,7 +389,7 @@
          </packing>
        </child>
        <child>
          <object class="svtlo-ColorListBox" id="underlinecolorlb">
          <object class="svxlo-SvxColorListBox" id="underlinecolorlb">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
          </object>
@@ -399,7 +399,7 @@
          </packing>
        </child>
        <child>
          <object class="svtlo-ColorListBox" id="overlinecolorlb">
          <object class="svxlo-SvxColorListBox" id="overlinecolorlb">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
          </object>
diff --git a/cui/uiconfig/ui/gradientpage.ui b/cui/uiconfig/ui/gradientpage.ui
index 8ab982b..b36b8d7 100644
--- a/cui/uiconfig/ui/gradientpage.ui
+++ b/cui/uiconfig/ui/gradientpage.ui
@@ -450,7 +450,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="colorfromlb">
                      <object class="svxlo-SvxColorListBox" id="colorfromlb">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="entry_text_column">0</property>
@@ -496,7 +496,7 @@
                    <property name="row_spacing">3</property>
                    <property name="column_spacing">6</property>
                    <child>
                      <object class="svxlo-ColorLB" id="colortolb">
                      <object class="svxlo-SvxColorListBox" id="colortolb">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="entry_text_column">0</property>
diff --git a/cui/uiconfig/ui/hatchpage.ui b/cui/uiconfig/ui/hatchpage.ui
index fd12b3e..f309800 100644
--- a/cui/uiconfig/ui/hatchpage.ui
+++ b/cui/uiconfig/ui/hatchpage.ui
@@ -266,7 +266,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="linecolorlb">
                  <object class="svxlo-SvxColorListBox" id="linecolorlb">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                      </object>
@@ -292,7 +292,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="backgroundcolorlb">
                  <object class="svxlo-SvxColorListBox" id="backgroundcolorlb">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                      </object>
diff --git a/cui/uiconfig/ui/linetabpage.ui b/cui/uiconfig/ui/linetabpage.ui
index 0060a6f..a70a0ae 100644
--- a/cui/uiconfig/ui/linetabpage.ui
+++ b/cui/uiconfig/ui/linetabpage.ui
@@ -156,7 +156,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="LB_COLOR">
                          <object class="svxlo-SvxColorListBox" id="LB_COLOR">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                          </object>
diff --git a/cui/uiconfig/ui/numberingoptionspage.ui b/cui/uiconfig/ui/numberingoptionspage.ui
index 71f392a..76b609f 100644
--- a/cui/uiconfig/ui/numberingoptionspage.ui
+++ b/cui/uiconfig/ui/numberingoptionspage.ui
@@ -485,7 +485,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svtlo-ColorListBox" id="color">
                          <object class="svxlo-SvxColorListBox" id="color">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                          </object>
diff --git a/cui/uiconfig/ui/patterntabpage.ui b/cui/uiconfig/ui/patterntabpage.ui
index 03bfe52..07edfc9 100644
--- a/cui/uiconfig/ui/patterntabpage.ui
+++ b/cui/uiconfig/ui/patterntabpage.ui
@@ -185,7 +185,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="LB_COLOR">
                      <object class="svxlo-SvxColorListBox" id="LB_COLOR">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
@@ -223,7 +223,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="LB_BACKGROUND_COLOR">
                      <object class="svxlo-SvxColorListBox" id="LB_BACKGROUND_COLOR">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
diff --git a/cui/uiconfig/ui/shadowtabpage.ui b/cui/uiconfig/ui/shadowtabpage.ui
index de63629..74ad9de 100644
--- a/cui/uiconfig/ui/shadowtabpage.ui
+++ b/cui/uiconfig/ui/shadowtabpage.ui
@@ -99,7 +99,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="LB_SHADOW_COLOR">
                      <object class="svxlo-SvxColorListBox" id="LB_SHADOW_COLOR">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index b19f135..84a0558 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -94,29 +94,11 @@
      </properties>
    </glade-widget-class>

    <glade-widget-class title="Svt Color ListBox" name="svtlo-ColorListBox"
                        generic-name="Svt Color ListBox" parent="GtkComboBox"
    <glade-widget-class title="Color ListBox" name="svxlo-ColorListBox"
                        generic-name="Color ListBox" parent="GtkComboBox"
                        icon-name="widget-gtk-combobox">
      <properties>
        <property save="True" query="False" id="dropdown" default="True" name="Use DropDown">
          <parameter-spec>
            <type>GParamBoolean</type>
          </parameter-spec>
        </property>
      </properties>
    </glade-widget-class>

    <glade-widget-class title="Svx Color ListBox" name="svxlo-ColorLB"
                        generic-name="Svx Color ListBox" parent="GtkComboBox"
                        icon-name="widget-gtk-combobox">
      <properties>
        <property save="True" query="False" id="dropdown" default="True" name="Use DropDown">
          <parameter-spec>
            <type>GParamBoolean</type>
          </parameter-spec>
        </property>
      </properties>
    </glade-widget-class>
    <glade-widget-class title="Gradient ListBox" name="svxlo-GradientLB"
                        generic-name="GradientListBox" parent="GtkComboBox"
                        icon-name="widget-gtk-combobox">
diff --git a/include/sfx2/controlwrapper.hxx b/include/sfx2/controlwrapper.hxx
index 079258d..1e4a2c8 100644
--- a/include/sfx2/controlwrapper.hxx
+++ b/include/sfx2/controlwrapper.hxx
@@ -115,7 +115,7 @@ private:
     |   +- DummyWindowWrapper   [1]
     |   +- CheckBoxWrapper   [1]
     |   +- EditWrapper   [1]
     |   +- ColorListBoxWrapper   [1]
     |   +- SvxColorListBoxWrapper   [1]
     |   |
     |   +- MetricFieldWrapper< ValueT >   [1]
     |   |   |
@@ -241,26 +241,6 @@ public:
};


/** A wrapper for the SVTOOLS ColorListBox. */
class SFX2_DLLPUBLIC ColorListBoxWrapper:
    public SingleControlWrapper< ColorListBox, Color >
{
    /*  Note: cannot use 'const Color&' as template argument, because the
        SVTOOLS ColorListBox returns the color by value and not by reference,
        therefore GetControlValue() must return a temporary object too. */
public:
    explicit ColorListBoxWrapper(ColorListBox & rListBox);

    virtual ~ColorListBoxWrapper() override;

    virtual bool        IsControlDontKnow() const override;
    virtual void        SetControlDontKnow( bool bSet ) override;

    virtual Color       GetControlValue() const override;
    virtual void        SetControlValue( Color aColor ) override;
};


/** A wrapper for the VCL MetricField.

    Adds support for field units during accessing the control value. The
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index c527b85..2347f0f6 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -48,11 +48,10 @@ class SVX_DLLPUBLIC PaletteManager

    XColorListRef           pColorList;
    Color                   mLastColor;
    typedef std::pair<Color, OUString>  color_and_name;
    std::deque<color_and_name> maRecentColors;
    std::deque<NamedColor>  maRecentColors;
    std::vector<std::unique_ptr<Palette>> m_Palettes;

    std::function<void(const OUString&, const Color&)> maColorSelectFunction;
    std::function<void(const OUString&, const NamedColor&)> maColorSelectFunction;
    css::uno::Reference < css::uno::XComponentContext > m_context;
public:
    PaletteManager();
@@ -74,14 +73,14 @@ public:

    const Color& GetLastColor();
    void        SetLastColor(const Color& rLastColor);
    void        AddRecentColor(const Color& rRecentColor, const OUString& rColorName);
    void        AddRecentColor(const Color& rRecentColor, const OUString& rColorName, bool bFront = true);

    void        SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater);
    void        PopupColorPicker(const OUString& aCommand);

    void        SetColorSelectFunction(const std::function<void(const OUString&, const Color&)>& aColorSelectFunction);
    void        SetColorSelectFunction(const std::function<void(const OUString&, const NamedColor&)>& aColorSelectFunction);

    static void DispatchColorCommand(const OUString& aCommand, const Color& rColor);
    static void DispatchColorCommand(const OUString& aCommand, const NamedColor& rColor);
};

#endif // INCLUDED_SVX_PALETTEMANAGER_HXX
diff --git a/include/svx/bmpmask.hxx b/include/svx/bmpmask.hxx
index 1f66ee5..6705b1c 100644
--- a/include/svx/bmpmask.hxx
+++ b/include/svx/bmpmask.hxx
@@ -75,6 +75,7 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxBmpMaskChildWindow : public SfxChildWindo
class MaskData;
class MaskSet;
class ColorWindow;
class SvxColorListBox;

class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxBmpMask : public SfxDockingWindow
{
@@ -88,28 +89,27 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxBmpMask : public SfxDockingWindow
    VclPtr<CheckBox>           m_pCbx1;
    VclPtr<MaskSet>            m_pQSet1;
    VclPtr<MetricField>        m_pSp1;
    VclPtr<ColorLB>            m_pLbColor1;
    VclPtr<SvxColorListBox>    m_pLbColor1;

    VclPtr<CheckBox>           m_pCbx2;
    VclPtr<MaskSet>            m_pQSet2;
    VclPtr<MetricField>        m_pSp2;
    VclPtr<ColorLB>            m_pLbColor2;
    VclPtr<SvxColorListBox>    m_pLbColor2;

    VclPtr<CheckBox>           m_pCbx3;
    VclPtr<MaskSet>            m_pQSet3;
    VclPtr<MetricField>        m_pSp3;
    VclPtr<ColorLB>            m_pLbColor3;
    VclPtr<SvxColorListBox>    m_pLbColor3;

    VclPtr<CheckBox>           m_pCbx4;
    VclPtr<MaskSet>            m_pQSet4;
    VclPtr<MetricField>        m_pSp4;
    VclPtr<ColorLB>            m_pLbColor4;
    VclPtr<SvxColorListBox>    m_pLbColor4;

    MaskData*           pData;
    VclPtr<CheckBox>           m_pCbxTrans;
    VclPtr<ColorLB>            m_pLbColorTrans;
    VclPtr<SvxColorListBox>    m_pLbColorTrans;

    XColorListRef       pColLst;
    Color               aPipetteColor;
    SvxBmpMaskSelectItem aSelItem;

@@ -140,9 +140,6 @@ public:
    void                SetColor( const Color& rColor );
    void                PipetteClicked();

    bool                NeedsColorList() const;
    void                SetColorList( const XColorListRef &pColorList );

    void                SetExecState( bool bEnable );

    Graphic             Mask( const Graphic& rGraphic );
diff --git a/include/svx/colorbox.hxx b/include/svx/colorbox.hxx
new file mode 100644
index 0000000..5fa4bfb
--- /dev/null
+++ b/include/svx/colorbox.hxx
@@ -0,0 +1,93 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

#ifndef INCLUDED_SVX_COLORBOX_HXX
#define INCLUDED_SVX_COLORBOX_HXX

#include <vcl/menubtn.hxx>
#include <svx/colorwindow.hxx>
#include <sfx2/controlwrapper.hxx>

class SvxColorListBox;

class SvxListBoxColorWrapper
{
public:
    SvxListBoxColorWrapper(SvxColorListBox* pControl);
    void operator()(const OUString& rCommand, const NamedColor& rColor);
private:
    VclPtr<SvxColorListBox> mxControl;
};

class SVX_DLLPUBLIC SvxColorListBox : public MenuButton
{
private:
    friend class SvxListBoxColorWrapper;
    VclPtr<SvxColorWindow> m_xColorWindow;
    Link<SvxColorListBox&, void> m_aSelectedLink;
    SvxListBoxColorWrapper m_aColorWrapper;
    Color m_aAutoDisplayColor;
    NamedColor m_aSelectedColor;
    sal_uInt16 m_nSlotId;
    bool m_bShowNoneButton;
    PaletteManager m_aPaletteManager;
    BorderColorStatus m_aBorderColorStatus;

    DECL_LINK(MenuActivateHdl, MenuButton *, void);
    void Selected(const NamedColor& rNamedColor);
    void createColorWindow();
    void LockWidthRequest();
    VclPtr<SvxColorWindow> getColorWindow() const;
public:
    SvxColorListBox(vcl::Window* pParent);
    virtual ~SvxColorListBox() override;
    virtual void dispose() override;

    void SetSelectHdl(const Link<SvxColorListBox&, void>& rLink)
    {
        m_aSelectedLink = rLink;
    }

    void SetSlotId(sal_uInt16 nSlotId, bool bShowNoneButton = false);

    NamedColor GetSelectEntry() const;
    Color GetSelectEntryColor() const;

    void SelectEntry(const NamedColor& rColor);
    void SelectEntry(const Color& rColor);

    void SetNoSelection() { getColorWindow()->SetNoSelection(); }
    bool IsNoSelection() const { return getColorWindow()->IsNoSelection(); }

    void SetAutoDisplayColor(const Color &rColor) { m_aAutoDisplayColor = rColor; }
    void ShowPreview(const NamedColor &rColor);
};

/** A wrapper for SvxColorListBox. */
class SVX_DLLPUBLIC SvxColorListBoxWrapper
    : public sfx::SingleControlWrapper<SvxColorListBox, Color>
{
    /*  Note: cannot use 'const Color&' as template argument, because the
        SvxColorListBox returns the color by value and not by reference,
        therefore GetControlValue() must return a temporary object too. */
public:
    explicit SvxColorListBoxWrapper(SvxColorListBox& rListBox);

    virtual ~SvxColorListBoxWrapper() override;

    virtual bool        IsControlDontKnow() const override;
    virtual void        SetControlDontKnow( bool bSet ) override;

    virtual Color       GetControlValue() const override;
    virtual void        SetControlValue( Color aColor ) override;
};

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx
index 8b185d9..3fc9510 100644
--- a/include/svx/colorwindow.hxx
+++ b/include/svx/colorwindow.hxx
@@ -31,8 +31,22 @@

#include <functional>

class BorderColorStatus;
class BorderColorStatus
{
    Color maColor;
    Color maTLBRColor;
    Color maBLTRColor;
public:
    BorderColorStatus();
    ~BorderColorStatus();
    bool statusChanged( const css::frame::FeatureStateEvent& rEvent );
    Color GetColor();
};

class Button;
typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunction;

#define COL_NONE_COLOR    TRGB_COLORDATA(0x80, 0xFF, 0xFF, 0xFF)

class SVX_DLLPUBLIC SvxColorWindow : public SfxPopupWindow
{
@@ -43,37 +57,49 @@ private:

    VclPtr<ListBox>     mpPaletteListBox;
    VclPtr<PushButton>  mpButtonAutoColor;
    VclPtr<PushButton>  mpButtonNoneColor;
    VclPtr<PushButton>  mpButtonPicker;
    VclPtr<FixedLine>   mpAutomaticSeparator;
    OUString            maCommand;
    Link<const Color&, void> maSelectedLink;
    Link<const NamedColor&, void> maSelectedLink;

    PaletteManager&     mrPaletteManager;
    BorderColorStatus&  mrBorderColorStatus;

    std::function<void(const OUString&, const Color&)> maColorSelectFunction;
    ColorSelectFunction maColorSelectFunction;

    DECL_LINK( SelectHdl, ValueSet*, void );
    DECL_LINK( SelectPaletteHdl, ListBox&, void);
    DECL_LINK( AutoColorClickHdl, Button*, void );
    DECL_LINK( OpenPickerClickHdl, Button*, void );

    static bool SelectValueSetEntry(SvxColorValueSet* pColorSet, const Color& rColor);
    static NamedColor GetSelectEntryColor(ValueSet* pColorSet);
    NamedColor GetAutoColor() const;
    NamedColor GetNoneColor() const;

public:
    SvxColorWindow( const OUString& rCommand,
                         PaletteManager& rPaletteManager,
                         BorderColorStatus& rBorderColorStatus,
                         sal_uInt16 nSlotId,
                         const css::uno::Reference< css::frame::XFrame >& rFrame,
                         vcl::Window* pParentWindow,
                         std::function<void(const OUString&, const Color&)> const & maColorSelectFunction);
    SvxColorWindow(const OUString& rCommand,
                   PaletteManager& rPaletteManager,
                   BorderColorStatus& rBorderColorStatus,
                   sal_uInt16 nSlotId,
                   const css::uno::Reference< css::frame::XFrame >& rFrame,
                   vcl::Window* pParentWindow,
                   ColorSelectFunction const& rColorSelectFunction);
    virtual ~SvxColorWindow() override;
    virtual void        dispose() override;
    void                ShowNoneButton();
    void                StartSelection();
    void                SetNoSelection();
    bool                IsNoSelection() const;
    void                SelectEntry(const NamedColor& rColor);
    void                SelectEntry(const Color& rColor);
    NamedColor          GetSelectEntryColor() const;

    virtual void        KeyInput( const KeyEvent& rKEvt ) override;
    virtual void        statusChanged( const css::frame::FeatureStateEvent& rEvent ) override;

    void SetSelectedHdl( const Link<const Color&, void>& rLink ) { maSelectedLink = rLink; }
    void SetSelectedHdl( const Link<const NamedColor&, void>& rLink ) { maSelectedLink = rLink; }
};

#endif
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc
index 3ccea55..589b6a8 100644
--- a/include/svx/dialogs.hrc
+++ b/include/svx/dialogs.hrc
@@ -31,8 +31,10 @@
// some strings also used in CUI
#define RID_SVXERRCTX                       (RID_SVX_START + 351)
#define RID_SVXSTR_COLOR                    (RID_SVX_START + 179)
#define RID_SVXSTR_TRANSPARENT              (RID_SVX_START + 190)
#define RID_SVXSTR_NOFILL                   (RID_SVX_START + 190)
#define RID_SVXSTR_AUTOMATIC                (RID_SVX_START + 841)
#define RID_SVXSTR_BY_AUTHOR                (RID_SVX_START + 842)
#define RID_SVXSTR_TRANSPARENT              (RID_SVX_START + 843)
#define RID_SVXSTR_INVISIBLE                (RID_SVX_START + 178)
#define RID_SVXSTR_NONE                     (RID_SVX_START + 183)
#define RID_SVXSTR_SOLID                    (RID_SVX_START + 160)
@@ -147,9 +149,6 @@
#define RID_SVXIMAGE_COLORDLG               (RID_SVX_START + 214)

#define RID_SVXFLOAT3D_FAVORITE             (RID_SVX_START + 73)
#define RID_SVXFLOAT3D_FIX_X                (RID_SVX_START + 74)
#define RID_SVXFLOAT3D_FIX_Y                (RID_SVX_START + 75)
#define RID_SVXFLOAT3D_FIX_Z                (RID_SVX_START + 76)
#define RID_SVXFLOAT3D_FIX_R                (RID_SVX_START + 77)
#define RID_SVXFLOAT3D_FIX_G                (RID_SVX_START + 78)
#define RID_SVXFLOAT3D_FIX_B                (RID_SVX_START + 84)
diff --git a/include/svx/float3d.hxx b/include/svx/float3d.hxx
index c9a9f95..396d104 100644
--- a/include/svx/float3d.hxx
+++ b/include/svx/float3d.hxx
@@ -41,14 +41,13 @@ enum class ViewType3D
    Material
};

class SdrModel;
class FmFormModel;
class VirtualDevice;
class E3dView;
class SdrPageView;
class Svx3DCtrlItem;
class SvxConvertTo3DItem;

class SvxColorListBox;

struct Svx3DWinImpl;

@@ -113,16 +112,16 @@ private:
    VclPtr<PushButton>         m_pBtnLight6;
    VclPtr<PushButton>         m_pBtnLight7;
    VclPtr<PushButton>         m_pBtnLight8;
    VclPtr<ColorLB>            m_pLbLight1;
    VclPtr<ColorLB>            m_pLbLight2;
    VclPtr<ColorLB>            m_pLbLight3;
    VclPtr<ColorLB>            m_pLbLight4;
    VclPtr<ColorLB>            m_pLbLight5;
    VclPtr<ColorLB>            m_pLbLight6;
    VclPtr<ColorLB>            m_pLbLight7;
    VclPtr<ColorLB>            m_pLbLight8;
    VclPtr<SvxColorListBox>    m_pLbLight1;
    VclPtr<SvxColorListBox>    m_pLbLight2;
    VclPtr<SvxColorListBox>    m_pLbLight3;
    VclPtr<SvxColorListBox>    m_pLbLight4;
    VclPtr<SvxColorListBox>    m_pLbLight5;
    VclPtr<SvxColorListBox>    m_pLbLight6;
    VclPtr<SvxColorListBox>    m_pLbLight7;
    VclPtr<SvxColorListBox>    m_pLbLight8;
    VclPtr<PushButton>         m_pBtnLightColor;
    VclPtr<ColorLB>            m_pLbAmbientlight;    // ListBox
    VclPtr<SvxColorListBox>    m_pLbAmbientlight;    // ListBox
    VclPtr<PushButton>         m_pBtnAmbientColor;   // color button

// Textures
@@ -144,13 +143,13 @@ private:
// material editor
    VclPtr<VclContainer>       m_pFLMaterial;
    VclPtr<ListBox>            m_pLbMatFavorites;
    VclPtr<ColorLB>            m_pLbMatColor;
    VclPtr<SvxColorListBox>    m_pLbMatColor;
    VclPtr<PushButton>         m_pBtnMatColor;
    VclPtr<ColorLB>            m_pLbMatEmission;
    VclPtr<SvxColorListBox>    m_pLbMatEmission;
    VclPtr<PushButton>         m_pBtnEmissionColor;

    VclPtr<VclContainer>       m_pFLMatSpecular;
    VclPtr<ColorLB>            m_pLbMatSpecular;
    VclPtr<SvxColorListBox>    m_pLbMatSpecular;
    VclPtr<PushButton>         m_pBtnSpecularColor;
    VclPtr<MetricField>        m_pMtrMatSpecularIntensity;

@@ -191,6 +190,7 @@ private:
    DECL_LINK( ClickHdl, Button*, void );
    DECL_LINK( ClickColorHdl, Button*, void );
    DECL_LINK( SelectHdl, ListBox&, void );
    DECL_LINK( SelectColorHdl, SvxColorListBox&, void );
    DECL_LINK( ModifyHdl, Edit&, void );
    void ClickLight(PushButton &rBtn);

@@ -199,9 +199,9 @@ private:
    SVX_DLLPRIVATE void         Construct();
    SVX_DLLPRIVATE void         Reset();

    SVX_DLLPRIVATE static bool  LBSelectColor( ColorLB* pLb, const Color& rColor );
    SVX_DLLPRIVATE static void  LBSelectColor( SvxColorListBox* pLb, const Color& rColor );
    SVX_DLLPRIVATE sal_uInt16   GetLightSource( const PushButton* pBtn );
    SVX_DLLPRIVATE ColorLB*     GetLbByButton( const PushButton* pBtn = nullptr );
    SVX_DLLPRIVATE SvxColorListBox* GetLbByButton( const PushButton* pBtn = nullptr );

    SVX_DLLPRIVATE bool         GetUILightState( const PushButton& rBtn ) const;
    SVX_DLLPRIVATE void         SetUILightState( PushButton& aBtn, bool bState );
@@ -215,7 +215,7 @@ public:
            virtual ~Svx3DWin() override;
    virtual void dispose() override;

    void    InitColorLB( const SdrModel* pDoc );
    void    InitColorLB();
    bool    IsUpdateMode() const { return bUpdate; }

    void    Update( SfxItemSet& rSet );
diff --git a/include/svx/fontwork.hxx b/include/svx/fontwork.hxx
index 5fe6ad0..83d1f3c 100644
--- a/include/svx/fontwork.hxx
+++ b/include/svx/fontwork.hxx
@@ -35,6 +35,7 @@
class SdrView;
class SdrPageView;
class SdrObject;
class SvxColorListBox;

class XFormTextAdjustItem;
class XFormTextDistanceItem;
@@ -107,7 +108,7 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxFontWorkDialog : public SfxDockingWindow
    VclPtr<FixedImage>      m_pFbShadowY;
    VclPtr<MetricField>     m_pMtrFldShadowY;

    VclPtr<ColorLB>         m_pShadowColorLB;
    VclPtr<SvxColorListBox> m_pShadowColorLB;

    SfxBindings&    rBindings;
    Idle            aInputIdle;
@@ -138,8 +139,6 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxFontWorkDialog : public SfxDockingWindow
    long            nSaveShadowAngle;
    long            nSaveShadowSize;

    XColorListRef   pColorList;

 friend class SvxFontWorkChildWindow;
 friend class SvxFontWorkControllerItem;

@@ -150,7 +149,7 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxFontWorkDialog : public SfxDockingWindow
    DECL_LINK( ModifyInputHdl_Impl, Edit&, void );
    DECL_LINK( InputTimoutHdl_Impl, Idle *, void );

    DECL_LINK( ColorSelectHdl_Impl, ListBox&, void );
    DECL_LINK( ColorSelectHdl_Impl, SvxColorListBox&, void );

    void SetStyle_Impl(const XFormTextStyleItem*);
    void SetAdjust_Impl(const XFormTextAdjustItem*);
@@ -175,8 +174,6 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxFontWorkDialog : public SfxDockingWindow
                      vcl::Window* pParent);
    virtual ~SvxFontWorkDialog() override;
    virtual void dispose() override;

    void SetColorList(const XColorListRef &pTable);
};

#endif // INCLUDED_SVX_FONTWORK_HXX
diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx
index 9d7e621..372d216 100644
--- a/include/svx/sidebar/AreaPropertyPanelBase.hxx
+++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx
@@ -25,6 +25,7 @@
#include <sfx2/sidebar/ControllerItem.hxx>
#include <sfx2/sidebar/SidebarController.hxx>
#include <sfx2/sidebar/SidebarToolBox.hxx>
#include <svx/colorbox.hxx>
#include <svx/xgrad.hxx>
#include <svx/itemwin.hxx>
#include <svx/xfillit0.hxx>
@@ -124,8 +125,8 @@ protected:
    VclPtr<FixedText>                                          mpColorTextFT;
    VclPtr<SvxFillTypeBox>                                     mpLbFillType;
    VclPtr<SvxFillAttrBox>                                     mpLbFillAttr;
    VclPtr<ColorLB>                                            mpLbFillGradFrom;
    VclPtr<ColorLB>                                            mpLbFillGradTo;
    VclPtr<SvxColorListBox>                                    mpLbFillGradFrom;
    VclPtr<SvxColorListBox>                                    mpLbFillGradTo;
    VclPtr<sfx2::sidebar::SidebarToolBox>                      mpToolBoxColor; // for new color picker
    VclPtr<FixedText>                                          mpTrspTextFT;
    VclPtr<ListBox>                                            mpLBTransType;
@@ -156,6 +157,7 @@ protected:

    DECL_LINK(SelectFillTypeHdl, ListBox&, void );
    DECL_LINK(SelectFillAttrHdl, ListBox&, void );
    DECL_LINK(SelectFillColorHdl, SvxColorListBox&, void);
    DECL_LINK(ChangeGradientAngle, Edit&, void);
    DECL_LINK(ChangeTrgrTypeHdl_Impl, ListBox&, void);
    DECL_LINK(ModifyTransparentHdl_Impl, Edit&, void);
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index f2a301c..919259e1 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -999,9 +999,11 @@
#define SID_LINE_ARROW_START                            ( SID_SVX_START + 1165 )
#define SID_LINE_ARROW_END                              ( SID_SVX_START + 1166 )
#define SID_DRAW_MEASURELINE                            ( SID_SVX_START + 1167 )
#define SID_AUTHOR_COLOR                                ( SID_SVX_START + 1168 )
#define SID_BMPMASK_COLOR                               ( SID_SVX_START + 1169 )

// IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id
#define SID_SVX_FIRSTFREE                               ( SID_DRAW_MEASURELINE + 1 )
#define SID_SVX_FIRSTFREE                               ( SID_BMPMASK_COLOR + 1 )

// Overflow check for slot IDs

diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx
index dfa129a..bf80838 100644
--- a/include/svx/tbcontrl.hxx
+++ b/include/svx/tbcontrl.hxx
@@ -136,6 +136,7 @@
#include <svx/strarray.hxx>
#include <svx/svxdllapi.h>
#include <com/sun/star/awt/FontDescriptor.hpp>
#include <svx/colorwindow.hxx>
#include <svx/PaletteManager.hxx>
#include <memory>

@@ -203,19 +204,8 @@ friend class SfxStyleControllerItem_Impl;
    SVX_DLLPRIVATE SfxStyleFamily GetActFamily();
};

class BorderColorStatus
{
    Color maColor;
    Color maTLBRColor;
    Color maBLTRColor;
public:
    BorderColorStatus();
    ~BorderColorStatus();
    bool statusChanged( const css::frame::FeatureStateEvent& rEvent );
    Color GetColor();
};
typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunction;

typedef std::function<void(const OUString&, const Color&)> ColorSelectFunction;
class SVX_DLLPUBLIC SvxColorToolBoxControl : public SfxToolBoxControl
{
    std::unique_ptr<svx::ToolboxButtonColorUpdater> m_xBtnUpdater;
@@ -223,7 +213,7 @@ class SVX_DLLPUBLIC SvxColorToolBoxControl : public SfxToolBoxControl
    BorderColorStatus m_aBorderColorStatus;
    bool m_bSplitButton;
    ColorSelectFunction m_aColorSelectFunction;
    DECL_LINK(SelectedHdl, const Color&, void);
    DECL_LINK(SelectedHdl, const NamedColor&, void);
public:
    SFX_DECL_TOOLBOX_CONTROL();
    SvxColorToolBoxControl(sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rToolBox);
diff --git a/sc/inc/sc.hrc b/sc/inc/sc.hrc
index 26bd9e9..64ae387 100644
--- a/sc/inc/sc.hrc
+++ b/sc/inc/sc.hrc
@@ -827,7 +827,7 @@
#define SCSTR_ORIENTATION_TOPBOTTOM (STR_START + 110)
#define SCSTR_ORIENTATION_BOTTOMTOP (STR_START + 111)
#define SCSTR_ORIENTATION_STANDARD  (STR_START + 112)
#define SCSTR_AUTHOR                (STR_START + 113)
//free
#define SCSTR_UNIT                  (STR_START + 114)

// print options
diff --git a/sc/source/ui/condformat/colorformat.cxx b/sc/source/ui/condformat/colorformat.cxx
index ab2e089..f6e9ebc 100644
--- a/sc/source/ui/condformat/colorformat.cxx
+++ b/sc/source/ui/condformat/colorformat.cxx
@@ -13,6 +13,7 @@
#include "document.hxx"
#include "sc.hrc"

#include <svx/colorbox.hxx>
#include <svx/xtable.hxx>
#include <svx/drawitem.hxx>
#include <vcl/msgbox.hxx>
@@ -66,16 +67,6 @@ void SetValue( ScDocument* pDoc, ScColorScaleEntry* pEntry, Edit& aEdit)
        aEdit.Disable();
}

void SelectColor(const Color& aColor, const OUString & aCustomName, ColorListBox& rLstBox)
{
    rLstBox.SelectEntry( aColor );
    if ( rLstBox.GetSelectEntryColor() != aColor )
    {
        rLstBox.InsertEntry( aColor, aCustomName );
        rLstBox.SelectEntry( aColor );
    }
}

}

ScDataBarSettingsDlg::ScDataBarSettingsDlg(vcl::Window* pWindow, const ScDataBarFormatData& rData, ScDocument* pDoc, const ScAddress& rPos):
@@ -100,14 +91,13 @@ ScDataBarSettingsDlg::ScDataBarSettingsDlg(vcl::Window* pWindow, const ScDataBar
    get( mpCbOnlyBar, "only_bar");

    maStrWarnSameValue = get<FixedText>("str_same_value")->GetText();
    maCustomColor = get<FixedText>("custom_color")->GetText();

    Init();

    ::SelectColor( rData.maPositiveColor, maCustomColor, *mpLbPos);
    mpLbPos->SelectEntry(rData.maPositiveColor);
    mpLbFillType->SelectEntryPos( rData.mbGradient ? 1 : 0 );
    if(rData.mpNegativeColor)
        ::SelectColor( *rData.mpNegativeColor, maCustomColor, *mpLbNeg );
    if (rData.mpNegativeColor)
        mpLbNeg->SelectEntry(*rData.mpNegativeColor);

    switch (rData.meAxisPosition)
    {
@@ -160,42 +150,9 @@ void ScDataBarSettingsDlg::dispose()

void ScDataBarSettingsDlg::Init()
{
    SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
    XColorListRef       pColorTable;

    DBG_ASSERT( pDocSh, "DocShell not found!" );

    if ( pDocSh )
    {
        const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem != nullptr )
            pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
    }
    if ( pColorTable.is() )
    {
        // filling the line color box
        mpLbPos->SetUpdateMode( false );
        mpLbNeg->SetUpdateMode( false );
        mpLbAxisCol->SetUpdateMode( false );

        for ( long i = 0; i < pColorTable->Count(); ++i )
        {
            const XColorEntry* pEntry = pColorTable->GetColor(i);
            mpLbPos->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
            mpLbNeg->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
            mpLbAxisCol->InsertEntry( pEntry->GetColor(), pEntry->GetName() );

            if(pEntry->GetColor() == Color(COL_LIGHTRED))
                mpLbNeg->SelectEntryPos(i);
            if(pEntry->GetColor() == Color(COL_BLACK))
                mpLbAxisCol->SelectEntryPos(i);
            if(pEntry->GetColor() == Color(COL_LIGHTBLUE))
                mpLbPos->SelectEntryPos(i);
        }
        mpLbPos->SetUpdateMode( true );
        mpLbNeg->SetUpdateMode( true );
        mpLbAxisCol->SetUpdateMode( true );
    }
    mpLbNeg->SelectEntry(Color(COL_LIGHTRED));
    mpLbAxisCol->SelectEntry(Color(COL_BLACK));
    mpLbPos->SelectEntry(Color(COL_LIGHTBLUE));
    mpBtnOk->SetClickHdl( LINK( this, ScDataBarSettingsDlg, OkBtnHdl ) );

    mpLbTypeMin->SetSelectHdl( LINK( this, ScDataBarSettingsDlg, TypeSelectHdl ) );
diff --git a/sc/source/ui/condformat/condformatdlgentry.cxx b/sc/source/ui/condformat/condformatdlgentry.cxx
index 415aa11..f427399 100644
--- a/sc/source/ui/condformat/condformatdlgentry.cxx
+++ b/sc/source/ui/condformat/condformatdlgentry.cxx
@@ -18,6 +18,7 @@
#include <sfx2/dispatch.hxx>
#include <svl/stritem.hxx>
#include <svl/intitem.hxx>
#include <svx/colorbox.hxx>
#include <svx/xtable.hxx>
#include <svx/drawitem.hxx>
#include <vcl/msgbox.hxx>
@@ -663,7 +664,7 @@ OUString convertNumberToString(double nVal, ScDocument* pDoc)
    return aText;
}

void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Edit& rEdit, ColorListBox& rLbCol, ScDocument* pDoc )
void SetColorScaleEntryTypes( const ScColorScaleEntry& rEntry, ListBox& rLbType, Edit& rEdit, SvxColorListBox& rLbCol, ScDocument* pDoc )
{
    // entry Automatic is not available for color scales
    sal_Int32 nIndex = static_cast<sal_Int32>(rEntry.GetType());
@@ -726,7 +727,7 @@ void SetColorScaleEntry( ScColorScaleEntry* pEntry, const ListBox& rType, const 
    }
}

ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const ColorListBox& rColor, const Edit& rValue, ScDocument* pDoc, const ScAddress& rPos )
ScColorScaleEntry* createColorScaleEntry( const ListBox& rType, const SvxColorListBox& rColor, const Edit& rValue, ScDocument* pDoc, const ScAddress& rPos )
{
    ScColorScaleEntry* pEntry = new ScColorScaleEntry();

@@ -796,38 +797,8 @@ void ScColorScale2FrmtEntry::Init()
{
    maLbEntryTypeMin->SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) );
    maLbEntryTypeMax->SetSelectHdl( LINK( this, ScColorScale2FrmtEntry, EntryTypeHdl ) );

    SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
    XColorListRef       pColorTable;

    DBG_ASSERT( pDocSh, "DocShell not found!" );

    if ( pDocSh )
    {
        const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem != nullptr )
            pColorTable = static_cast<const SvxColorListItem*>(pItem) ->GetColorList();
    }
    if ( pColorTable.is() )
    {
        // filling the line color box
        maLbColMin->SetUpdateMode( false );
        maLbColMax->SetUpdateMode( false );

        for ( long i = 0; i < pColorTable->Count(); ++i )
        {
            const XColorEntry* pEntry = pColorTable->GetColor(i);
            maLbColMin->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
            maLbColMax->InsertEntry( pEntry->GetColor(), pEntry->GetName() );

            if(pEntry->GetColor() == Color(COL_LIGHTRED))
                maLbColMin->SelectEntryPos(i);
            if(pEntry->GetColor() == Color(COL_LIGHTBLUE))
                maLbColMax->SelectEntryPos(i);
        }
        maLbColMin->SetUpdateMode( true );
        maLbColMax->SetUpdateMode( true );
    }
    maLbColMin->SelectEntry(Color(COL_LIGHTRED));
    maLbColMax->SelectEntry(Color(COL_LIGHTBLUE));
}

ScFormatEntry* ScColorScale2FrmtEntry::createColorscaleEntry() const
@@ -976,43 +947,9 @@ void ScColorScale3FrmtEntry::Init()
    maLbEntryTypeMin->SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
    maLbEntryTypeMax->SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );
    maLbEntryTypeMiddle->SetSelectHdl( LINK( this, ScColorScale3FrmtEntry, EntryTypeHdl ) );

    SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
    XColorListRef       pColorTable;

    DBG_ASSERT( pDocSh, "DocShell not found!" );

    if ( pDocSh )
    {
        const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem != nullptr )
            pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
    }
    if ( pColorTable.is() )
    {
        // filling the line color box
        maLbColMin->SetUpdateMode( false );
        maLbColMiddle->SetUpdateMode( false );
        maLbColMax->SetUpdateMode( false );

        for ( long i = 0; i < pColorTable->Count(); ++i )
        {
            const XColorEntry* pEntry = pColorTable->GetColor(i);
            maLbColMin->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
            maLbColMiddle->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
            maLbColMax->InsertEntry( pEntry->GetColor(), pEntry->GetName() );

            if(pEntry->GetColor() == Color(COL_LIGHTRED))
                maLbColMin->SelectEntryPos(i);
            if(pEntry->GetColor() == Color(COL_YELLOW))
                maLbColMiddle->SelectEntryPos(i);
            if(pEntry->GetColor() == Color(0x00CC00)) // Green 3
                maLbColMax->SelectEntryPos(i);
        }
        maLbColMin->SetUpdateMode( true );
        maLbColMiddle->SetUpdateMode( true );
        maLbColMax->SetUpdateMode( true );
    }
    maLbColMin->SelectEntry(Color(COL_LIGHTRED));
    maLbColMiddle->SelectEntry(Color(COL_YELLOW));
    maLbColMax->SelectEntry(Color(0x00CC00));
}

ScFormatEntry* ScColorScale3FrmtEntry::createColorscaleEntry() const
diff --git a/sc/source/ui/dbgui/scendlg.cxx b/sc/source/ui/dbgui/scendlg.cxx
index 3cd9044..efcd657 100644
--- a/sc/source/ui/dbgui/scendlg.cxx
+++ b/sc/source/ui/dbgui/scendlg.cxx
@@ -21,6 +21,7 @@

#include "scitems.hxx"
#include <comphelper/string.hxx>
#include <svx/colorbox.hxx>
#include <svx/drawitem.hxx>
#include <svx/xtable.hxx>
#include <sfx2/objsh.hxx>
@@ -58,27 +59,6 @@ ScNewScenarioDlg::ScNewScenarioDlg( vcl::Window* pParent, const OUString& rName,
    if (bIsEdit)
        SetText(get<FixedText>("alttitle")->GetText());

    SfxObjectShell* pDocSh = SfxObjectShell::Current();
    if ( pDocSh )
    {
        const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem )
        {
            XColorListRef pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
            if (pColorList.is())
            {
                m_pLbColor->SetUpdateMode( false );
                long nCount = pColorList->Count();
                for ( long n=0; n<nCount; n++ )
                {
                    const XColorEntry* pEntry = pColorList->GetColor(n);
                    m_pLbColor->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
                }
                m_pLbColor->SetUpdateMode( true );
            }
        }
    }

    SvtUserOptions aUserOpt;

    OUString sCreatedBy(get<FixedText>("createdft")->GetText());
diff --git a/sc/source/ui/drawfunc/drawsh4.cxx b/sc/source/ui/drawfunc/drawsh4.cxx
index 9e620e5..01d2576 100644
--- a/sc/source/ui/drawfunc/drawsh4.cxx
+++ b/sc/source/ui/drawfunc/drawsh4.cxx
@@ -34,17 +34,8 @@
void ScDrawShell::GetFormTextState(SfxItemSet& rSet)
{
    const SdrObject*    pObj        = nullptr;
    SvxFontWorkDialog*  pDlg        = nullptr;
    ScDrawView*         pDrView     = pViewData->GetScDrawView();
    const SdrMarkList&  rMarkList   = pDrView->GetMarkedObjectList();
    sal_uInt16              nId = SvxFontWorkChildWindow::GetChildWindowId();

    SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
    if (pViewFrm->HasChildWindow(nId))
    {
        SfxChildWindow* pWnd = pViewFrm->GetChildWindow(nId);
        pDlg = pWnd ? static_cast<SvxFontWorkDialog*>(pWnd->GetWindow()) : nullptr;
    }

    if ( rMarkList.GetMarkCount() == 1 )
        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
@@ -72,22 +63,6 @@ void ScDrawShell::GetFormTextState(SfxItemSet& rSet)
    }
    else
    {
        if ( pDlg )
        {
            SfxObjectShell* pDocSh = SfxObjectShell::Current();

            if ( pDocSh )
            {
                const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
                XColorListRef pColorList;

                if ( pItem )
                    pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();

                if ( pColorList.is() )
                    pDlg->SetColorList( pColorList );
            }
        }
        SfxItemSet aViewAttr(pDrView->GetModel()->GetItemPool());
        pDrView->GetAttributes(aViewAttr);
        rSet.Set(aViewAttr);
diff --git a/sc/source/ui/drawfunc/drtxtob2.cxx b/sc/source/ui/drawfunc/drtxtob2.cxx
index 9a97a6a..a7eb77a 100644
--- a/sc/source/ui/drawfunc/drtxtob2.cxx
+++ b/sc/source/ui/drawfunc/drtxtob2.cxx
@@ -202,17 +202,8 @@ void ScDrawTextObjectBar::ExecFormText(SfxRequest& rReq)
void ScDrawTextObjectBar::GetFormTextState(SfxItemSet& rSet)
{
    const SdrObject*    pObj        = nullptr;
    SvxFontWorkDialog*  pDlg        = nullptr;
    ScDrawView*         pDrView     = pViewData->GetView()->GetScDrawView();
    const SdrMarkList&  rMarkList   = pDrView->GetMarkedObjectList();
    sal_uInt16              nId = SvxFontWorkChildWindow::GetChildWindowId();

    SfxViewFrame* pViewFrm = pViewData->GetViewShell()->GetViewFrame();
    if (pViewFrm->HasChildWindow(nId))
    {
        SfxChildWindow* pWnd = pViewFrm->GetChildWindow(nId);
        pDlg = pWnd ? static_cast<SvxFontWorkDialog*>(pWnd->GetWindow()) : nullptr;
    }

    if ( rMarkList.GetMarkCount() == 1 )
        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
@@ -240,22 +231,6 @@ void ScDrawTextObjectBar::GetFormTextState(SfxItemSet& rSet)
    }
    else
    {
        if ( pDlg )
        {
            SfxObjectShell* pDocSh = SfxObjectShell::Current();

            if ( pDocSh )
            {
                const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
                XColorListRef pColorList;

                if ( pItem )
                    pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();

                if ( pColorList.is() )
                    pDlg->SetColorList( pColorList );
            }
        }
        SfxItemSet aViewAttr(pDrView->GetModel()->GetItemPool());
        pDrView->GetAttributes(aViewAttr);
        rSet.Set(aViewAttr);
diff --git a/sc/source/ui/inc/colorformat.hxx b/sc/source/ui/inc/colorformat.hxx
index 682be33..8838418 100644
--- a/sc/source/ui/inc/colorformat.hxx
+++ b/sc/source/ui/inc/colorformat.hxx
@@ -19,6 +19,7 @@

struct ScDataBarFormatData;
class ScDocument;
class SvxColorListBox;

class ScDataBarSettingsDlg : public ModalDialog
{
@@ -26,9 +27,9 @@ private:
    VclPtr<OKButton> mpBtnOk;
    VclPtr<CancelButton> mpBtnCancel;

    VclPtr<ColorListBox> mpLbPos;
    VclPtr<ColorListBox> mpLbNeg;
    VclPtr<ColorListBox> mpLbAxisCol;
    VclPtr<SvxColorListBox> mpLbPos;
    VclPtr<SvxColorListBox> mpLbNeg;
    VclPtr<SvxColorListBox> mpLbAxisCol;

    VclPtr<ListBox> mpLbFillType;
    VclPtr<ListBox> mpLbTypeMin;
@@ -43,7 +44,6 @@ private:
    VclPtr<CheckBox> mpCbOnlyBar;

    OUString maStrWarnSameValue;
    OUString maCustomColor;
    SvNumberFormatter* mpNumberFormatter;

    ScDocument* mpDoc;
diff --git a/sc/source/ui/inc/condformatdlgentry.hxx b/sc/source/ui/inc/condformatdlgentry.hxx
index cba1224..f7d446f 100644
--- a/sc/source/ui/inc/condformatdlgentry.hxx
+++ b/sc/source/ui/inc/condformatdlgentry.hxx
@@ -18,6 +18,7 @@

class ScIconSetFrmtDataEntry;
class ScCondFormatDlg;
class SvxColorListBox;

namespace condformat {

@@ -172,8 +173,8 @@ class ScColorScale2FrmtEntry : public ScCondFrmtEntry
    VclPtr<Edit> maEdMin;
    VclPtr<Edit> maEdMax;

    VclPtr<ColorListBox> maLbColMin;
    VclPtr<ColorListBox> maLbColMax;
    VclPtr<SvxColorListBox> maLbColMin;
    VclPtr<SvxColorListBox> maLbColMax;

    ScFormatEntry* createColorscaleEntry() const;

@@ -206,9 +207,9 @@ class ScColorScale3FrmtEntry : public ScCondFrmtEntry
    VclPtr<Edit> maEdMiddle;
    VclPtr<Edit> maEdMax;

    VclPtr<ColorListBox> maLbColMin;
    VclPtr<ColorListBox> maLbColMiddle;
    VclPtr<ColorListBox> maLbColMax;
    VclPtr<SvxColorListBox> maLbColMin;
    VclPtr<SvxColorListBox> maLbColMiddle;
    VclPtr<SvxColorListBox> maLbColMax;

    ScFormatEntry* createColorscaleEntry() const;

diff --git a/sc/source/ui/inc/opredlin.hxx b/sc/source/ui/inc/opredlin.hxx
index a0a3e76..69d1bfb 100644
--- a/sc/source/ui/inc/opredlin.hxx
+++ b/sc/source/ui/inc/opredlin.hxx
@@ -36,11 +36,10 @@

class ScRedlineOptionsTabPage : public SfxTabPage
{
    VclPtr<ColorListBox>       m_pContentColorLB;
    VclPtr<ColorListBox>       m_pRemoveColorLB;
    VclPtr<ColorListBox>       m_pInsertColorLB;
    VclPtr<ColorListBox>       m_pMoveColorLB;
    OUString                   aAuthorStr;
    VclPtr<SvxColorListBox>    m_pContentColorLB;
    VclPtr<SvxColorListBox>    m_pRemoveColorLB;
    VclPtr<SvxColorListBox>    m_pInsertColorLB;
    VclPtr<SvxColorListBox>    m_pMoveColorLB;

public:

diff --git a/sc/source/ui/inc/scendlg.hxx b/sc/source/ui/inc/scendlg.hxx
index e20073c..3d5ecf4 100644
--- a/sc/source/ui/inc/scendlg.hxx
+++ b/sc/source/ui/inc/scendlg.hxx
@@ -29,6 +29,8 @@

enum class ScScenarioFlags;

class SvxColorListBox;

class ScNewScenarioDlg : public ModalDialog
{
public:
@@ -45,7 +47,7 @@ private:
    VclPtr<Edit>               m_pEdName;
    VclPtr<VclMultiLineEdit>   m_pEdComment;
    VclPtr<CheckBox>           m_pCbShowFrame;
    VclPtr<ColorListBox>       m_pLbColor;
    VclPtr<SvxColorListBox>    m_pLbColor;
    VclPtr<CheckBox>           m_pCbTwoWay;
    VclPtr<CheckBox>           m_pCbCopyAll;
    VclPtr<CheckBox>           m_pCbProtect;
diff --git a/sc/source/ui/inc/tpview.hxx b/sc/source/ui/inc/tpview.hxx
index 359be48..480d824 100644
--- a/sc/source/ui/inc/tpview.hxx
+++ b/sc/source/ui/inc/tpview.hxx
@@ -28,13 +28,14 @@
#include <svx/strarray.hxx>

class ScViewOptions;
class SvxColorListBox;

class ScTpContentOptions : public SfxTabPage
{
    friend class VclPtr<ScTpContentOptions>;
    VclPtr<ListBox>         pGridLB;
    VclPtr<FixedText>       pColorFT;
    VclPtr<ColorListBox>    pColorLB;
    VclPtr<SvxColorListBox> pColorLB;
    VclPtr<CheckBox>        pBreakCB;
    VclPtr<CheckBox>        pGuideLineCB;

diff --git a/sc/source/ui/optdlg/opredlin.cxx b/sc/source/ui/optdlg/opredlin.cxx
index f8fb216..8a769ad2 100644
--- a/sc/source/ui/optdlg/opredlin.cxx
+++ b/sc/source/ui/optdlg/opredlin.cxx
@@ -19,6 +19,7 @@

#undef SC_DLLIMPLEMENTATION

#include <svx/colorbox.hxx>
#include <svx/dlgutil.hxx>
#include <svx/drawitem.hxx>
#include <svx/xtable.hxx>
@@ -40,13 +41,16 @@

ScRedlineOptionsTabPage::ScRedlineOptionsTabPage( vcl::Window* pParent,
                                                    const SfxItemSet& rSet )
    : SfxTabPage(pParent,"OptChangesPage", "modules/scalc/ui/optchangespage.ui", &rSet),
    aAuthorStr      (ScResId(SCSTR_AUTHOR))
    : SfxTabPage(pParent,"OptChangesPage", "modules/scalc/ui/optchangespage.ui", &rSet)
{
    get(m_pContentColorLB, "changes");
    m_pContentColorLB->SetSlotId(SID_AUTHOR_COLOR);
    get(m_pRemoveColorLB, "deletions");
    m_pRemoveColorLB->SetSlotId(SID_AUTHOR_COLOR);
    get(m_pInsertColorLB, "entries");
    m_pInsertColorLB->SetSlotId(SID_AUTHOR_COLOR);
    get(m_pMoveColorLB, "insertions");
    m_pMoveColorLB->SetSlotId(SID_AUTHOR_COLOR);
}

ScRedlineOptionsTabPage::~ScRedlineOptionsTabPage()
@@ -72,53 +76,17 @@ bool ScRedlineOptionsTabPage::FillItemSet( SfxItemSet* /* rSet */ )
{
    ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();

    sal_uLong nNew=0;
    sal_Int32 nPos=0;
    sal_uLong nNew = m_pContentColorLB->GetSelectEntryColor().GetColor();
    aAppOptions.SetTrackContentColor(nNew);

    nPos = m_pContentColorLB->GetSelectEntryPos();
    if (nPos != LISTBOX_ENTRY_NOTFOUND)
    {
        if (nPos!=0)
            nNew= m_pContentColorLB->GetEntryColor(nPos).GetColor();
        else
            nNew= COL_TRANSPARENT;
    nNew = m_pMoveColorLB->GetSelectEntryColor().GetColor();
    aAppOptions.SetTrackMoveColor(nNew);

        aAppOptions.SetTrackContentColor(nNew);
    nNew = m_pInsertColorLB->GetSelectEntryColor().GetColor();
    aAppOptions.SetTrackInsertColor(nNew);

    }
    nPos = m_pMoveColorLB->GetSelectEntryPos();
    if (nPos != LISTBOX_ENTRY_NOTFOUND)
    {
        if (nPos!=0)
            nNew= m_pMoveColorLB->GetEntryColor(nPos).GetColor();
        else
            nNew= COL_TRANSPARENT;

        aAppOptions.SetTrackMoveColor(nNew);

    }
    nPos = m_pInsertColorLB->GetSelectEntryPos();
    if (nPos != LISTBOX_ENTRY_NOTFOUND)
    {
        if (nPos!=0)
            nNew= m_pInsertColorLB->GetEntryColor(nPos).GetColor();
        else
            nNew= COL_TRANSPARENT;

        aAppOptions.SetTrackInsertColor(nNew);

    }
    nPos = m_pRemoveColorLB->GetSelectEntryPos();
    if (nPos != LISTBOX_ENTRY_NOTFOUND)
    {
        if (nPos!=0)
            nNew= m_pRemoveColorLB->GetEntryColor(nPos).GetColor();
        else
            nNew= COL_TRANSPARENT;

        aAppOptions.SetTrackDeleteColor(nNew);

    }
    nNew = m_pRemoveColorLB->GetSelectEntryColor().GetColor();
    aAppOptions.SetTrackDeleteColor(nNew);

    SC_MOD()->SetAppOptions(aAppOptions);

@@ -133,59 +101,19 @@ bool ScRedlineOptionsTabPage::FillItemSet( SfxItemSet* /* rSet */ )

void ScRedlineOptionsTabPage::Reset( const SfxItemSet* /* rSet */ )
{
    m_pContentColorLB->InsertEntry(aAuthorStr);
    m_pMoveColorLB->InsertEntry(aAuthorStr);
    m_pInsertColorLB->InsertEntry(aAuthorStr);
    m_pRemoveColorLB->InsertEntry(aAuthorStr);

    m_pContentColorLB->SetUpdateMode( false);
    m_pMoveColorLB->SetUpdateMode( false);
    m_pInsertColorLB->SetUpdateMode( false);
    m_pRemoveColorLB->SetUpdateMode( false);

    XColorListRef xColorLst = XColorList::GetStdColorList();
    for( long i = 0; i < xColorLst->Count(); ++i )
    {
        const XColorEntry* pEntry = xColorLst->GetColor(i);
        Color aColor = pEntry->GetColor();
        OUString sName = pEntry->GetName();

        m_pContentColorLB->InsertEntry( aColor, sName );
        m_pMoveColorLB->InsertEntry( aColor, sName );
        m_pInsertColorLB->InsertEntry( aColor, sName );
        m_pRemoveColorLB->InsertEntry( aColor, sName );
    }
    m_pContentColorLB->SetUpdateMode( true );
    m_pMoveColorLB->SetUpdateMode( true );
    m_pInsertColorLB->SetUpdateMode( true );
    m_pRemoveColorLB->SetUpdateMode( true );

    ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();

    sal_uLong nColor = aAppOptions.GetTrackContentColor();
    if (nColor == COL_TRANSPARENT)
        m_pContentColorLB->SelectEntryPos(0);
    else
        m_pContentColorLB->SelectEntry(Color(nColor));
    m_pContentColorLB->SelectEntry(Color(nColor));

    nColor = aAppOptions.GetTrackMoveColor();
    if (nColor == COL_TRANSPARENT)
        m_pMoveColorLB->SelectEntryPos(0);
    else
        m_pMoveColorLB->SelectEntry(Color(nColor));
    m_pMoveColorLB->SelectEntry(Color(nColor));

    nColor = aAppOptions.GetTrackInsertColor();
    if (nColor == COL_TRANSPARENT)
        m_pInsertColorLB->SelectEntryPos(0);
    else
        m_pInsertColorLB->SelectEntry(Color(nColor));
    m_pInsertColorLB->SelectEntry(Color(nColor));

    nColor = aAppOptions.GetTrackDeleteColor();
    if (nColor == COL_TRANSPARENT)
        m_pRemoveColorLB->SelectEntryPos(0);
    else
        m_pRemoveColorLB->SelectEntry(Color(nColor));

    m_pRemoveColorLB->SelectEntry(Color(nColor));
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/optdlg/tpview.cxx b/sc/source/ui/optdlg/tpview.cxx
index 9e254fb..0257ff2 100644
--- a/sc/source/ui/optdlg/tpview.cxx
+++ b/sc/source/ui/optdlg/tpview.cxx
@@ -31,6 +31,7 @@
#include "globstr.hrc"
#include <appoptio.hxx>
#include <scmod.hxx>
#include <svx/colorbox.hxx>
#include <svx/dlgutil.hxx>
#include <svx/drawitem.hxx>
#include <svx/xtable.hxx>
@@ -151,8 +152,8 @@ bool    ScTpContentOptions::FillItemSet( SfxItemSet* rCoreSet )
        pBreakCB       ->IsValueChangedFromSaved() ||
        pGuideLineCB   ->IsValueChangedFromSaved())
    {
        pLocalOptions->SetGridColor( pColorLB->GetSelectEntryColor(),
                                     pColorLB->GetSelectEntry() );
        NamedColor aNamedColor = pColorLB->GetSelectEntry();
        pLocalOptions->SetGridColor(aNamedColor.first, aNamedColor.second);
        rCoreSet->Put(ScTpViewItem(SID_SCVIEWOPTIONS, *pLocalOptions));
        bRet = true;
    }
@@ -302,58 +303,14 @@ void ScTpContentOptions::InitGridOpt()

    pGridLB->SelectEntryPos (nSelPos);

    if ( pColorLB->GetEntryCount() == 0 )
    {
        SfxObjectShell* pDocSh = SfxObjectShell::Current();
        // there might be another DocShell here
        pDocSh = dynamic_cast<ScDocShell*>( pDocSh );

        XColorListRef pColorList;
        if ( pDocSh  )
        {
            const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
            if ( pItem )
                pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
        }
        else
            pColorList = XColorList::GetStdColorList();

        if ( !pColorList.is() )
            return;

        pColorLB->SetUpdateMode( false );

        // items from ColorTable

        long nCount = pColorList->Count();
        for ( long n=0; n<nCount; n++ )
        {
            const XColorEntry* pEntry = pColorList->GetColor(n);
            pColorLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        }

        // default GridColor

        Color aStdCol( SC_STD_GRIDCOLOR );          // same default as in ScViewOptions
        if ( LISTBOX_ENTRY_NOTFOUND ==
                pColorLB->GetEntryPos( aStdCol ) )
            pColorLB->InsertEntry( aStdCol, ScGlobal::GetRscString( STR_GRIDCOLOR ) );

        pColorLB->SetUpdateMode( true );

        Invalidate();
    }

    //  also select grid color entry on subsequent calls

    //  select grid color entry
    OUString  aName;
    Color     aCol    = pLocalOptions->GetGridColor( &aName );
    nSelPos = pColorLB->GetEntryPos( aCol );

    if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
        pColorLB->SelectEntryPos( nSelPos );
    else
        pColorLB->SelectEntryPos( pColorLB->InsertEntry( aCol, aName ) );
    if (aName.trim().isEmpty() && aCol == Color(SC_STD_GRIDCOLOR))
        aName = ScGlobal::GetRscString(STR_GRIDCOLOR);

    pColorLB->SelectEntry(std::make_pair(aCol, aName));
}

IMPL_LINK( ScTpContentOptions, GridHdl, ListBox&, rLb, void )
diff --git a/sc/source/ui/src/scstring.src b/sc/source/ui/src/scstring.src
index 70dc432..e4e7e6b 100644
--- a/sc/source/ui/src/scstring.src
+++ b/sc/source/ui/src/scstring.src
@@ -798,11 +798,6 @@ String SCSTR_ROW_LABEL
    Text [ en-US ] = "Range contains ~row labels" ;
};

String SCSTR_AUTHOR
{
    Text [ en-US ] = "By author" ;
};

StringArray SCSTR_UNIT
{
    ItemList [ en-US ] =
diff --git a/sc/uiconfig/scalc/ui/conditionalentry.ui b/sc/uiconfig/scalc/ui/conditionalentry.ui
index 86d18e1..a7f4f14 100644
--- a/sc/uiconfig/scalc/ui/conditionalentry.ui
+++ b/sc/uiconfig/scalc/ui/conditionalentry.ui
@@ -131,7 +131,7 @@
          </packing>
        </child>
        <child>
          <object class="svtlo-ColorListBox" id="lbcolmin">
          <object class="svxlo-SvxColorListBox" id="lbcolmin">
            <property name="can_focus">False</property>
          </object>
          <packing>
@@ -140,7 +140,7 @@
          </packing>
        </child>
        <child>
          <object class="svtlo-ColorListBox" id="lbcolmiddle">
          <object class="svxlo-SvxColorListBox" id="lbcolmiddle">
            <property name="can_focus">False</property>
          </object>
          <packing>
@@ -149,7 +149,7 @@
          </packing>
        </child>
        <child>
          <object class="svtlo-ColorListBox" id="lbcolmax">
          <object class="svxlo-SvxColorListBox" id="lbcolmax">
            <property name="can_focus">False</property>
          </object>
          <packing>
diff --git a/sc/uiconfig/scalc/ui/databaroptions.ui b/sc/uiconfig/scalc/ui/databaroptions.ui
index c2a4ae2..0624e8b 100644
--- a/sc/uiconfig/scalc/ui/databaroptions.ui
+++ b/sc/uiconfig/scalc/ui/databaroptions.ui
@@ -241,7 +241,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svtlo-ColorListBox" id="positive_colour">
                          <object class="svxlo-SvxColorListBox" id="positive_colour">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="hexpand">True</property>
@@ -252,7 +252,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svtlo-ColorListBox" id="negative_colour">
                          <object class="svxlo-SvxColorListBox" id="negative_colour">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="hexpand">True</property>
@@ -374,7 +374,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svtlo-ColorListBox" id="axis_colour">
                          <object class="svxlo-SvxColorListBox" id="axis_colour">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="hexpand">True</property>
@@ -523,17 +523,6 @@
                <property name="position">5</property>
              </packing>
            </child>
            <child>
              <object class="GtkLabel" id="custom_color">
                <property name="can_focus">False</property>
                <property name="label" translatable="yes">Custom</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">6</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
diff --git a/sc/uiconfig/scalc/ui/optchangespage.ui b/sc/uiconfig/scalc/ui/optchangespage.ui
index df83ce9..7d4bba5 100644
--- a/sc/uiconfig/scalc/ui/optchangespage.ui
+++ b/sc/uiconfig/scalc/ui/optchangespage.ui
@@ -87,7 +87,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="changes">
                  <object class="svxlo-SvxColorListBox" id="changes">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
@@ -97,7 +97,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="deletions">
                  <object class="svxlo-SvxColorListBox" id="deletions">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
@@ -107,7 +107,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="entries">
                  <object class="svxlo-SvxColorListBox" id="entries">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
@@ -117,7 +117,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="insertions">
                  <object class="svxlo-SvxColorListBox" id="insertions">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
diff --git a/sc/uiconfig/scalc/ui/scenariodialog.ui b/sc/uiconfig/scalc/ui/scenariodialog.ui
index 846c05e..ece0490 100644
--- a/sc/uiconfig/scalc/ui/scenariodialog.ui
+++ b/sc/uiconfig/scalc/ui/scenariodialog.ui
@@ -253,7 +253,7 @@
                              </packing>
                            </child>
                            <child>
                              <object class="svtlo-ColorListBox" id="bordercolor">
                              <object class="svxlo-SvxColorListBox" id="bordercolor">
                                <property name="visible">True</property>
                                <property name="can_focus">False</property>
                                <accessibility>
diff --git a/sc/uiconfig/scalc/ui/tpviewpage.ui b/sc/uiconfig/scalc/ui/tpviewpage.ui
index 1e39a39..9d1591e 100644
--- a/sc/uiconfig/scalc/ui/tpviewpage.ui
+++ b/sc/uiconfig/scalc/ui/tpviewpage.ui
@@ -345,7 +345,7 @@
                        <property name="row_spacing">6</property>
                        <property name="column_spacing">12</property>
                        <child>
                          <object class="svxlo-ColorLB" id="color">
                          <object class="svxlo-SvxColorListBox" id="color">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="hexpand">True</property>
diff --git a/sd/inc/sdabstdlg.hxx b/sd/inc/sdabstdlg.hxx
index e326932..7f763c6 100644
--- a/sd/inc/sdabstdlg.hxx
+++ b/sd/inc/sdabstdlg.hxx
@@ -180,7 +180,7 @@ public:
    SD_DLLPUBLIC static SdAbstractDialogFactory*     Create();

    virtual VclPtr<VclAbstractDialog>          CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount ) = 0;
    virtual VclPtr<AbstractCopyDlg>            CreateCopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView ) = 0;
    virtual VclPtr<AbstractCopyDlg>            CreateCopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, ::sd::View* pView ) = 0;
    virtual VclPtr<AbstractSdCustomShowDlg>    CreateSdCustomShowDlg(vcl::Window* pWindow, SdDrawDocument& rDrawDoc) = 0;
    virtual VclPtr<SfxAbstractTabDialog>       CreateSdTabCharDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell) = 0;
    virtual VclPtr<SfxAbstractTabDialog>       CreateSdTabPageDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage) = 0;
diff --git a/sd/qa/unit/dialogs-test.cxx b/sd/qa/unit/dialogs-test.cxx
index 4acc570c..3b10d33 100644
--- a/sd/qa/unit/dialogs-test.cxx
+++ b/sd/qa/unit/dialogs-test.cxx
@@ -292,16 +292,10 @@ VclAbstractDialog* SdDialogsTest::createDialogByID(sal_uInt32 nID)
        }
        case 2:
        {
            // CreateCopyDlg(const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView) override;
            // works without XColorList (DropDowns will be empty), but
            // it's easy to access, so use it
            XColorListRef pColorList(XColorList::CreateStdColorList());

            // needs an SfxItemSet, use the one from the 1st object
            pRetval = getSdAbstractDialogFactory()->CreateCopyDlg(
                getViewShell()->GetActiveWindow(),
                getSfxItemSetFromSdrObject(),
                pColorList,
                getDrawView());
            break;
        }
diff --git a/sd/source/ui/animations/CustomAnimationDialog.cxx b/sd/source/ui/animations/CustomAnimationDialog.cxx
index 2ba3459..6726317 100644
--- a/sd/source/ui/animations/CustomAnimationDialog.cxx
+++ b/sd/source/ui/animations/CustomAnimationDialog.cxx
@@ -62,6 +62,7 @@
#include <editeng/flstitem.hxx>
#include <svx/drawitem.hxx>

#include <svx/colorbox.hxx>
#include <svx/xtable.hxx>
#include <svx/gallery.hxx>

@@ -191,43 +192,24 @@ public:
    virtual Control* getControl() override;

private:
    VclPtr<ColorListBox> mpControl;
    DECL_LINK(OnSelect, ListBox&, void);
    VclPtr<SvxColorListBox> mpControl;
    DECL_LINK(OnSelect, SvxColorListBox&, void);
    Link<LinkParamNone*,void> maModifyLink;
};

ColorPropertyBox::ColorPropertyBox( sal_Int32 nControlType, vcl::Window* pParent, const Any& rValue, const Link<LinkParamNone*,void>& rModifyHdl )
: PropertySubControl( nControlType ), maModifyLink(rModifyHdl)
{
    mpControl = VclPtr<ColorListBox>::Create( pParent, WB_BORDER|WB_TABSTOP|WB_DROPDOWN );
    mpControl->SetDropDownLineCount( 10 );
    mpControl = VclPtr<SvxColorListBox>::Create(pParent);
    mpControl->SetSelectHdl( LINK(this, ColorPropertyBox, OnSelect) );
    mpControl->SetHelpId( HID_SD_CUSTOMANIMATIONPANE_COLORPROPERTYBOX );

    SfxObjectShell* pDocSh = SfxObjectShell::Current();
    DBG_ASSERT( pDocSh, "DocShell not found!" );
    XColorListRef pColorList;
    const SfxPoolItem* pItem = nullptr;

    if ( pDocSh && ( ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) != nullptr) )
        pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();

    if ( !pColorList.is() )
        pColorList = XColorList::CreateStdColorList();

    sal_Int32 nColor = 0;
    rValue >>= nColor;

    for ( long i = 0; i < pColorList->Count(); i++ )
    {
        const XColorEntry* pEntry = pColorList->GetColor(i);
        sal_Int32 nPos = mpControl->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        if( pEntry->GetColor().GetRGBColor() == (sal_uInt32)nColor )
            mpControl->SelectEntryPos( nPos );
    }
    mpControl->SelectEntry(static_cast<Color>(nColor));
}

IMPL_LINK_NOARG(ColorPropertyBox, OnSelect, ListBox&, void)
IMPL_LINK_NOARG(ColorPropertyBox, OnSelect, SvxColorListBox&, void)
{
    maModifyLink.Call(nullptr);
}
@@ -245,7 +227,7 @@ void ColorPropertyBox::setValue( const Any& rValue, const OUString& )
        rValue >>= nColor;

        mpControl->SetNoSelection();
        mpControl->SelectEntryPos( mpControl->GetEntryPos( static_cast<Color>(nColor) ) );
        mpControl->SelectEntry(static_cast<Color>(nColor));
    }
}

@@ -1040,7 +1022,7 @@ private:
    VclPtr<FixedText>      mpFTAfterEffect;
    VclPtr<ListBox>        mpLBAfterEffect;
    VclPtr<FixedText>      mpFTDimColor;
    VclPtr<ColorListBox>   mpCLBDimColor;
    VclPtr<SvxColorListBox> mpCLBDimColor;
    VclPtr<FixedText>      mpFTTextAnim;
    VclPtr<ListBox>        mpLBTextAnim;
    VclPtr<MetricField>    mpMFTextDelay;
@@ -1065,6 +1047,7 @@ CustomAnimationEffectTabPage::CustomAnimationEffectTabPage( vcl::Window* pParent
    get(mpLBAfterEffect, "aeffect_list" );
    get(mpFTDimColor, "dim_color_label" );
    get(mpCLBDimColor, "dim_color_list" );
    mpCLBDimColor->SelectEntry(Color(COL_BLACK));
    get(mpFTTextAnim, "text_animation_label" );
    get(mpLBTextAnim, "text_animation_list" );
    get(mpMFTextDelay,"text_delay" );
@@ -1077,28 +1060,6 @@ CustomAnimationEffectTabPage::CustomAnimationEffectTabPage( vcl::Window* pParent

    mpPBSoundPreview->SetClickHdl( LINK( this, CustomAnimationEffectTabPage, implClickHdl ) );

    // fill the color box
    SfxObjectShell* pDocSh = SfxObjectShell::Current();
    DBG_ASSERT( pDocSh, "DocShell not found!" );
    XColorListRef pColorList;
    const SfxPoolItem* pItem = nullptr;

    if ( pDocSh && ( (pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) != nullptr ) )
        pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();

    if ( !pColorList.is() )
        pColorList = XColorList::CreateStdColorList();

    mpCLBDimColor->SetUpdateMode( false );

    for ( long i = 0; i < pColorList->Count(); i++ )
    {
        const XColorEntry* pEntry = pColorList->GetColor(i);
        mpCLBDimColor->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
    }

    mpCLBDimColor->SetUpdateMode( true );

    // only show settings if all selected effects have the same preset-id
    if( pSet->getPropertyState( nHandlePresetId ) != STLPropertyState::Ambiguous )
    {
@@ -1174,13 +1135,8 @@ CustomAnimationEffectTabPage::CustomAnimationEffectTabPage( vcl::Window* pParent
            {
                sal_Int32 nColor = 0;
                aDimColor >>= nColor;
                Color aColor( nColor );
                sal_Int32 nColorPos = mpCLBDimColor->GetEntryPos( aColor );
                if ( LISTBOX_ENTRY_NOTFOUND != nColorPos )
                    mpCLBDimColor->SelectEntryPos( nColorPos );
                else
                    mpCLBDimColor->SelectEntryPos(
                        mpCLBDimColor->InsertEntry( aColor, SVX_RESSTR(RID_SVXSTR_COLOR_USER) ) );
                Color aColor(nColor);
                mpCLBDimColor->SelectEntry(aColor);
            }
            else
            {
@@ -1332,16 +1288,7 @@ IMPL_LINK( CustomAnimationEffectTabPage, implSelectHdl, ListBox&, rListBox, void

void CustomAnimationEffectTabPage::implHdl(Control* pControl )
{
    if( pControl == mpLBAfterEffect )
    {
        sal_Int32 nPos = static_cast<ListBox*>( mpLBAfterEffect )->GetSelectEntryPos();
        if( nPos == 1 )
        {
            if( mpCLBDimColor->GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND )
                mpCLBDimColor->SelectEntryPos(0);
        }
    }
    else if( pControl == mpLBTextAnim )
    if( pControl == mpLBTextAnim )
    {
        if( mpMFTextDelay->GetValue() == 0 )
            mpMFTextDelay->SetValue( 100 );
@@ -1420,10 +1367,7 @@ void CustomAnimationEffectTabPage::update( STLPropertySet* pSet )
        Any aDimColor;
        if( nPos == 1 )
        {
            Color aSelectedColor;
            if ( mpCLBDimColor->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
                aSelectedColor = mpCLBDimColor->GetSelectEntryColor();

            Color aSelectedColor = mpCLBDimColor->GetSelectEntryColor();
            aDimColor = makeAny( (sal_Int32)aSelectedColor.GetRGBColor() );
        }

diff --git a/sd/source/ui/dlg/copydlg.cxx b/sd/source/ui/dlg/copydlg.cxx
index f68e06c..efcebc1 100644
--- a/sd/source/ui/dlg/copydlg.cxx
+++ b/sd/source/ui/dlg/copydlg.cxx
@@ -19,6 +19,7 @@

#include "copydlg.hxx"
#include <comphelper/string.hxx>
#include <svx/colorbox.hxx>
#include <svx/dlgutil.hxx>
#include <sfx2/module.hxx>
#include <svx/xcolit.hxx>
@@ -40,11 +41,9 @@ namespace sd {

#define TOKEN ';'

CopyDlg::CopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs,
    const XColorListRef &pColList, ::sd::View* pInView)
CopyDlg::CopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, ::sd::View* pInView)
    : SfxModalDialog(pWindow, "DuplicateDialog", "modules/sdraw/ui/copydlg.ui")
    , mrOutAttrs(rInAttrs)
    , mpColorList(pColList)
    , maUIScale(pInView->GetDoc().GetUIScale())
    , mpView(pInView)
{
@@ -60,11 +59,6 @@ CopyDlg::CopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs,
    get(m_pLbEndColor, "end");
    get(m_pBtnSetDefault, "default");

    // color tables
    DBG_ASSERT( mpColorList.is(), "No colortable available !" );
    m_pLbStartColor->Fill( mpColorList );
    m_pLbEndColor->CopyEntries( *m_pLbStartColor );

    m_pLbStartColor->SetSelectHdl( LINK( this, CopyDlg, SelectColorHdl ) );
    m_pBtnSetViewData->SetClickHdl( LINK( this, CopyDlg, SetViewData ) );
    m_pBtnSetDefault->SetClickHdl( LINK( this, CopyDlg, SetDefault ) );
@@ -201,31 +195,22 @@ void CopyDlg::GetAttr( SfxItemSet& rOutAttrs )
    rOutAttrs.Put( SfxInt32Item( ATTR_COPY_WIDTH, nWidth ) );
    rOutAttrs.Put( SfxInt32Item( ATTR_COPY_HEIGHT, nHeight ) );

    if( m_pLbStartColor->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
    {
        XColorItem aXColorItem( ATTR_COPY_START_COLOR, m_pLbStartColor->GetSelectEntry(),
                                    m_pLbStartColor->GetSelectEntryColor() );
        rOutAttrs.Put( aXColorItem );
    }
    if( m_pLbEndColor->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND )
    {
        XColorItem aXColorItem( ATTR_COPY_END_COLOR, m_pLbEndColor->GetSelectEntry(),
                                    m_pLbEndColor->GetSelectEntryColor() );
        rOutAttrs.Put( aXColorItem );
    }
    NamedColor aColor = m_pLbStartColor->GetSelectEntry();
    rOutAttrs.Put(XColorItem(ATTR_COPY_START_COLOR, aColor.second, aColor.first));
    aColor = m_pLbEndColor->GetSelectEntry();
    rOutAttrs.Put(XColorItem(ATTR_COPY_END_COLOR, aColor.second, aColor.first));
}

/**
 * enables and selects end color LB
 */
IMPL_LINK_NOARG(CopyDlg, SelectColorHdl, ListBox&, void)
IMPL_LINK_NOARG(CopyDlg, SelectColorHdl, SvxColorListBox&, void)
{
    sal_Int32 nPos = m_pLbStartColor->GetSelectEntryPos();
    const Color aColor = m_pLbStartColor->GetSelectEntryColor();

    if( nPos != LISTBOX_ENTRY_NOTFOUND &&
        !m_pLbEndColor->IsEnabled() )
    if (!m_pLbEndColor->IsEnabled())
    {
        m_pLbEndColor->SelectEntryPos( nPos );
        m_pLbEndColor->SelectEntry(aColor);
        m_pLbEndColor->Enable();
        m_pFtEndColor->Enable();
    }
diff --git a/sd/source/ui/dlg/sddlgfact.cxx b/sd/source/ui/dlg/sddlgfact.cxx
index d2041f2..23289ab 100644
--- a/sd/source/ui/dlg/sddlgfact.cxx
+++ b/sd/source/ui/dlg/sddlgfact.cxx
@@ -315,10 +315,9 @@ VclPtr<VclAbstractDialog> SdAbstractDialogFactory_Impl::CreateBreakDlg(

VclPtr<AbstractCopyDlg> SdAbstractDialogFactory_Impl::CreateCopyDlg(vcl::Window* pParent,
                                            const SfxItemSet& rInAttrs,
                                            const rtl::Reference<XColorList> &pColTab,
                                            ::sd::View* pView )
{
    return VclPtr<AbstractCopyDlg_Impl>::Create( VclPtr<::sd::CopyDlg>::Create( pParent, rInAttrs, pColTab, pView ) );
    return VclPtr<AbstractCopyDlg_Impl>::Create( VclPtr<::sd::CopyDlg>::Create( pParent, rInAttrs, pView ) );
}

VclPtr<AbstractSdCustomShowDlg> SdAbstractDialogFactory_Impl::CreateSdCustomShowDlg(vcl::Window* pParent, SdDrawDocument& rDrawDoc )
diff --git a/sd/source/ui/dlg/sddlgfact.hxx b/sd/source/ui/dlg/sddlgfact.hxx
index f014c87..5eb076b 100644
--- a/sd/source/ui/dlg/sddlgfact.hxx
+++ b/sd/source/ui/dlg/sddlgfact.hxx
@@ -215,7 +215,7 @@ public:
    virtual ~SdAbstractDialogFactory_Impl() {}

    virtual VclPtr<VclAbstractDialog>          CreateBreakDlg(vcl::Window* pWindow, ::sd::DrawView* pDrView, ::sd::DrawDocShell* pShell, sal_uLong nSumActionCount, sal_uLong nObjCount) override;
    virtual VclPtr<AbstractCopyDlg>            CreateCopyDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, const rtl::Reference<XColorList> &pColTab, ::sd::View* pView) override;
    virtual VclPtr<AbstractCopyDlg>            CreateCopyDlg(vcl::Window* pParent, const SfxItemSet& rInAttrs, ::sd::View* pView) override;
    virtual VclPtr<AbstractSdCustomShowDlg>    CreateSdCustomShowDlg(vcl::Window* pParent, SdDrawDocument& rDrawDoc) override;
    virtual VclPtr<SfxAbstractTabDialog>       CreateSdTabCharDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell) override;
    virtual VclPtr<SfxAbstractTabDialog>       CreateSdTabPageDialog(vcl::Window* pWindow, const SfxItemSet* pAttr, SfxObjectShell* pDocShell, bool bAreaPage) override;
diff --git a/sd/source/ui/func/fucopy.cxx b/sd/source/ui/func/fucopy.cxx
index a834258..3fb2dc9 100644
--- a/sd/source/ui/func/fucopy.cxx
+++ b/sd/source/ui/func/fucopy.cxx
@@ -102,7 +102,7 @@ void FuCopy::DoExecute( SfxRequest& rReq )
            SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
            if( pFact )
            {
                ScopedVclPtr<AbstractCopyDlg> pDlg(pFact->CreateCopyDlg(mpViewShell->GetActiveWindow(), aSet, mpDoc->GetColorList(), mpView ));
                ScopedVclPtr<AbstractCopyDlg> pDlg(pFact->CreateCopyDlg(mpViewShell->GetActiveWindow(), aSet, mpView ));
                if (!pDlg)
                    return;

diff --git a/sd/source/ui/inc/copydlg.hxx b/sd/source/ui/inc/copydlg.hxx
index 98ac00a..33a97c5 100644
--- a/sd/source/ui/inc/copydlg.hxx
+++ b/sd/source/ui/inc/copydlg.hxx
@@ -28,6 +28,8 @@
#include <sfx2/basedlgs.hxx>
#include <tools/fract.hxx>

class SvxColorListBox;

namespace sd {

class View;
@@ -39,8 +41,7 @@ class CopyDlg
    : public SfxModalDialog
{
public:
    CopyDlg( vcl::Window* pWindow, const SfxItemSet& rInAttrs,
        const XColorListRef &pColList, ::sd::View* pView );
    CopyDlg(vcl::Window* pWindow, const SfxItemSet& rInAttrs, ::sd::View* pView);
    virtual ~CopyDlg() override;
    virtual void dispose() override;

@@ -58,18 +59,17 @@ private:
    VclPtr<MetricField>        m_pMtrFldWidth;
    VclPtr<MetricField>        m_pMtrFldHeight;

    VclPtr<ColorLB>            m_pLbStartColor;
    VclPtr<SvxColorListBox>    m_pLbStartColor;
    VclPtr<FixedText>          m_pFtEndColor;
    VclPtr<ColorLB>            m_pLbEndColor;
    VclPtr<SvxColorListBox>    m_pLbEndColor;

    VclPtr<PushButton>         m_pBtnSetDefault;

    const SfxItemSet&   mrOutAttrs;
    XColorListRef       mpColorList;
    Fraction            maUIScale;
    ::sd::View*         mpView;

    DECL_LINK( SelectColorHdl, ListBox&, void );
    DECL_LINK( SelectColorHdl, SvxColorListBox&, void );
    DECL_LINK( SetViewData, Button*, void );
    DECL_LINK( SetDefault, Button*, void );
};
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index 89587c5..3957fba 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -38,6 +38,7 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include "sdresid.hxx"
#include <svtools/controldims.hrc>
#include <svx/colorbox.hxx>
#include <svx/gallery.hxx>
#include <svx/drawitem.hxx>
#include <unotools/pathoptions.hxx>
@@ -211,48 +212,21 @@ void SlideBackground::Update()
            mpFillAttr->Hide();
            mpFillGrad->Hide();
            mpFillLB->Show();
            mpFillLB->Clear();
            const SvxColorListItem aItem( *static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE)));
            mpFillLB->Fill(aItem.GetColorList());

            const Color aColor = GetColorSetOrDefault();
            mpFillLB->SelectEntry( aColor );

            if(mpFillLB->GetSelectEntryCount() == 0)
            {
                mpFillLB->InsertEntry(aColor, OUString());
                mpFillLB->SelectEntry(aColor);
            }
            mpFillLB->SelectEntry(aColor);
        }
        break;
        case GRADIENT:
        {
            mpFillLB->Show();
            const SvxColorListItem aItem(*static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE)));
            mpFillAttr->Hide();
            mpFillGrad->Show();
            mpFillLB->Clear();
            mpFillGrad->Clear();
            mpFillLB->Fill(aItem.GetColorList());
            mpFillGrad->Fill(aItem.GetColorList());

            const XGradient xGradient = GetGradientSetOrDefault();
            const Color aStartColor = xGradient.GetStartColor();
            mpFillLB->SelectEntry(aStartColor);
            const Color aEndColor = xGradient.GetEndColor();
            mpFillLB->SelectEntry( aStartColor );
            mpFillGrad->SelectEntry( aEndColor );

            if(mpFillLB->GetSelectEntryCount() == 0)
            {
                mpFillLB->InsertEntry(aStartColor, OUString());
                mpFillLB->SelectEntry(aStartColor);
            }

            if(mpFillGrad->GetSelectEntryCount() == 0)
            {
                mpFillGrad->InsertEntry(aEndColor, OUString());
                mpFillGrad->SelectEntry(aEndColor);
            }
            mpFillGrad->SelectEntry(aEndColor);
        }
        break;

@@ -831,7 +805,7 @@ IMPL_LINK_NOARG(SlideBackground, PaperSizeModifyHdl, ListBox&, void)
    GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_SIZE, SfxCallMode::RECORD, { &aSizeItem, mpPageItem.get() });
}

IMPL_LINK_NOARG(SlideBackground, FillColorHdl, ListBox&, void)
IMPL_LINK_NOARG(SlideBackground, FillColorHdl, SvxColorListBox&, void)
{
    const drawing::FillStyle eXFS = (drawing::FillStyle)mpFillStyle->GetSelectEntryPos();
    switch(eXFS)
diff --git a/sd/source/ui/sidebar/SlideBackground.hxx b/sd/source/ui/sidebar/SlideBackground.hxx
index deb9a3b..fbbe701 100644
--- a/sd/source/ui/sidebar/SlideBackground.hxx
+++ b/sd/source/ui/sidebar/SlideBackground.hxx
@@ -45,6 +45,8 @@
#include "EventMultiplexer.hxx"
#include <sfx2/sidebar/IContextChangeReceiver.hxx>

class SvxColorListBox;

namespace sd { namespace sidebar {

class SlideBackground :
@@ -79,9 +81,9 @@ private:
    VclPtr<ListBox> mpPaperOrientation;
    VclPtr<ListBox> mpMasterSlide;
    VclPtr<SvxFillTypeBox> mpFillStyle;
    VclPtr<ColorLB> mpFillLB;
    VclPtr<SvxColorListBox> mpFillLB;
    VclPtr<SvxFillAttrBox> mpFillAttr;
    VclPtr<ColorLB> mpFillGrad;
    VclPtr<SvxColorListBox> mpFillGrad;
    VclPtr<CheckBox> mpDspMasterBackground;
    VclPtr<CheckBox> mpDspMasterObjects;
    VclPtr<Button> mpCloseMaster;
@@ -120,7 +122,7 @@ private:
    DECL_LINK(FillBackgroundHdl, ListBox&, void);
    DECL_LINK(FillStyleModifyHdl, ListBox&, void);
    DECL_LINK(PaperSizeModifyHdl, ListBox&, void);
    DECL_LINK(FillColorHdl, ListBox&, void);
    DECL_LINK(FillColorHdl, SvxColorListBox&, void);
    DECL_LINK(AssignMasterPage, ListBox&, void);
    DECL_LINK(DspBackground, Button*, void);
    DECL_LINK(DspObjects, Button*, void);
diff --git a/sd/source/ui/view/drviews6.cxx b/sd/source/ui/view/drviews6.cxx
index d34b08f..7fa40d5 100644
--- a/sd/source/ui/view/drviews6.cxx
+++ b/sd/source/ui/view/drviews6.cxx
@@ -87,15 +87,6 @@ void DrawViewShell::GetFormTextState(SfxItemSet& rSet)
{
    const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
    const SdrObject* pObj = nullptr;
    SvxFontWorkDialog* pDlg = nullptr;

    sal_uInt16 nId = SvxFontWorkChildWindow::GetChildWindowId();

    if (GetViewFrame()->HasChildWindow(nId))
    {
        SfxChildWindow* pWnd = GetViewFrame()->GetChildWindow(nId);
        pDlg = pWnd ? static_cast<SvxFontWorkDialog*>(pWnd->GetWindow()) : nullptr;
    }

    if ( rMarkList.GetMarkCount() == 1 )
        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
@@ -125,9 +116,6 @@ void DrawViewShell::GetFormTextState(SfxItemSet& rSet)
    }
    else
    {
        if ( pDlg )
            pDlg->SetColorList(GetDoc()->GetColorList());

        SfxItemSet aSet( GetDoc()->GetPool() );
        mpDrawView->GetAttributes( aSet );
        rSet.Set( aSet );
@@ -341,17 +329,8 @@ void DrawViewShell::GetBmpMaskState( SfxItemSet& rSet )
{
    const SdrMarkList&  rMarkList = mpDrawView->GetMarkedObjectList();
    const SdrObject*    pObj = nullptr;
    sal_uInt16              nId = SvxBmpMaskChildWindow::GetChildWindowId();
    bool                bEnable = false;

    if ( GetViewFrame()->HasChildWindow( nId ) )
    {
        SfxChildWindow* pWnd = GetViewFrame()->GetChildWindow(nId);
        SvxBmpMask* pDlg = pWnd ? static_cast<SvxBmpMask*>(pWnd->GetWindow()) : nullptr;
        if (pDlg && pDlg->NeedsColorList())
            pDlg->SetColorList(GetDoc()->GetColorList());
    }

    if ( rMarkList.GetMarkCount() == 1 )
        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();

diff --git a/sd/source/ui/view/drviewsi.cxx b/sd/source/ui/view/drviewsi.cxx
index a2fe62b..4236050 100644
--- a/sd/source/ui/view/drviewsi.cxx
+++ b/sd/source/ui/view/drviewsi.cxx
@@ -72,7 +72,7 @@ void DrawViewShell::ExecEffectWin( SfxRequest& rReq )
            {
                Svx3DWin* p3DWin = static_cast<Svx3DWin*>( pWindow->GetWindow() );
                if( p3DWin )
                    p3DWin->InitColorLB( GetDoc() );
                    p3DWin->InitColorLB();
            }
        }
        break;
diff --git a/sd/uiconfig/sdraw/ui/copydlg.ui b/sd/uiconfig/sdraw/ui/copydlg.ui
index 2ae2610..451c854 100644
--- a/sd/uiconfig/sdraw/ui/copydlg.ui
+++ b/sd/uiconfig/sdraw/ui/copydlg.ui
@@ -448,7 +448,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="start">
                          <object class="svxlo-SvxColorListBox" id="start">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="hexpand">True</property>
@@ -459,7 +459,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="end">
                          <object class="svxlo-SvxColorListBox" id="end">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="hexpand">True</property>
diff --git a/sd/uiconfig/simpress/ui/customanimationeffecttab.ui b/sd/uiconfig/simpress/ui/customanimationeffecttab.ui
index fffceb7..7588458 100644
--- a/sd/uiconfig/simpress/ui/customanimationeffecttab.ui
+++ b/sd/uiconfig/simpress/ui/customanimationeffecttab.ui
@@ -254,7 +254,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="dim_color_list">
                  <object class="svxlo-SvxColorListBox" id="dim_color_list">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
diff --git a/sd/uiconfig/simpress/ui/sidebarslidebackground.ui b/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
index 9b5d24a..0ab82e1 100644
--- a/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
+++ b/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
@@ -67,7 +67,7 @@
          </packing>
        </child>
        <child>
          <object class="svxlo-ColorLB" id="fillattr">
          <object class="svxlo-SvxColorListBox" id="fillattr">
            <property name="width_request">150</property>
            <property name="can_focus">False</property>
            <property name="has_tooltip">True</property>
@@ -140,7 +140,7 @@
          </packing>
        </child>
        <child>
          <object class="svxlo-ColorLB" id="fillattr2">
          <object class="svxlo-SvxColorListBox" id="fillattr2">
            <property name="width_request">150</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
diff --git a/sfx2/source/dialog/itemconnect.cxx b/sfx2/source/dialog/itemconnect.cxx
index f07e551..e793ef7 100644
--- a/sfx2/source/dialog/itemconnect.cxx
+++ b/sfx2/source/dialog/itemconnect.cxx
@@ -129,34 +129,6 @@ void CheckBoxWrapper::SetControlValue( bool bValue )
}


ColorListBoxWrapper::ColorListBoxWrapper(ColorListBox & rListBox):
    SingleControlWrapper< ColorListBox, Color >(rListBox)
{}

ColorListBoxWrapper::~ColorListBoxWrapper()
{}

bool ColorListBoxWrapper::IsControlDontKnow() const
{
    return GetControl().GetSelectEntryCount() == 0;
}

void ColorListBoxWrapper::SetControlDontKnow( bool bSet )
{
    if( bSet ) GetControl().SetNoSelection();
}

Color ColorListBoxWrapper::GetControlValue() const
{
    return GetControl().GetSelectEntryColor();
}

void ColorListBoxWrapper::SetControlValue( Color aColor )
{
    GetControl().SelectEntry( aColor );
}


// Multi control wrappers


diff --git a/svtools/source/control/ctrlbox.cxx b/svtools/source/control/ctrlbox.cxx
index 4c6b107..b54e54c 100644
--- a/svtools/source/control/ctrlbox.cxx
+++ b/svtools/source/control/ctrlbox.cxx
@@ -93,18 +93,6 @@ ColorListBox::ColorListBox( vcl::Window* pParent, WinBits nWinStyle ) :
    SetEdgeBlending(true);
}

VCL_BUILDER_DECL_FACTORY(ColorListBox)
{
    bool bDropdown = VclBuilder::extractDropdown(rMap);
    WinBits nWinBits = WB_LEFT|WB_VCENTER|WB_3DLOOK|WB_TABSTOP;
    if (bDropdown)
        nWinBits |= WB_DROPDOWN;
    VclPtrInstance<ColorListBox> pListBox(pParent, nWinBits);
    if (bDropdown)
        pListBox->EnableAutoSize(true);
    rRet = pListBox;
}

ColorListBox::~ColorListBox()
{
    disposeOnce();
diff --git a/svx/source/dialog/_bmpmask.cxx b/svx/source/dialog/_bmpmask.cxx
index 77ca04f..5eec4f8 100644
--- a/svx/source/dialog/_bmpmask.cxx
+++ b/svx/source/dialog/_bmpmask.cxx
@@ -25,6 +25,7 @@
#include <sfx2/dispatch.hxx>
#include <svtools/colrdlg.hxx>

#include <svx/colorbox.hxx>
#include <svx/dialmgr.hxx>
#include <svx/bmpmask.hxx>
#include <svx/dialogs.hrc>
@@ -34,7 +35,6 @@
#include "helpid.hrc"

#define BMP_RESID(nId)  ResId(nId, DIALOG_MGR())
#define TRANSP_COL      (Color( 252, 252, 252 ))
#define OWN_CALLMODE    SfxCallMode::ASYNCHRON | SfxCallMode::RECORD


@@ -293,7 +293,7 @@ IMPL_LINK( MaskData, CbxTransHdl, Button*, pButton, void )

IMPL_LINK( MaskData, FocusLbHdl, Control&, rControl, void )
{
    ColorLB* pLb = static_cast<ColorLB*>(&rControl);
    SvxColorListBox* pLb = static_cast<SvxColorListBox*>(&rControl);
    // MT: bFireFox as API parameter is ugly, find better solution????
    pMask->m_pQSet1->SelectItem( pLb == pMask->m_pLbColor1 ? 1 : 0 /* , false */ );
    pMask->m_pQSet2->SelectItem( pLb == pMask->m_pLbColor2 ? 1 : 0 /* , false */ );
@@ -373,6 +373,7 @@ SvxBmpMask::SvxBmpMask(SfxBindings *pBindinx, SfxChildWindow *pCW, vcl::Window* 
    m_pQSet1->Show();
    get(m_pSp1, "tol1");
    get(m_pLbColor1, "color1");
    m_pLbColor1->SetSlotId(SID_BMPMASK_COLOR);
    get(m_pCbx2, "cbx2");
    m_pQSet2 = VclPtr<MaskSet>::Create(this, pGrid);
    m_pQSet2->set_grid_left_attach(1);
@@ -380,6 +381,7 @@ SvxBmpMask::SvxBmpMask(SfxBindings *pBindinx, SfxChildWindow *pCW, vcl::Window* 
    m_pQSet2->Show();
    get(m_pSp2, "tol2");
    get(m_pLbColor2, "color2");
    m_pLbColor2->SetSlotId(SID_BMPMASK_COLOR);
    get(m_pCbx3, "cbx3");
    m_pQSet3 = VclPtr<MaskSet>::Create(this, pGrid);
    m_pQSet3->set_grid_left_attach(1);
@@ -387,6 +389,7 @@ SvxBmpMask::SvxBmpMask(SfxBindings *pBindinx, SfxChildWindow *pCW, vcl::Window* 
    m_pQSet3->Show();
    get(m_pSp3, "tol3");
    get(m_pLbColor3, "color3");
    m_pLbColor3->SetSlotId(SID_BMPMASK_COLOR);
    get(m_pCbx4, "cbx4");
    m_pQSet4   = VclPtr<MaskSet>::Create(this, pGrid);
    m_pQSet4->set_grid_left_attach(1);
@@ -394,14 +397,15 @@ SvxBmpMask::SvxBmpMask(SfxBindings *pBindinx, SfxChildWindow *pCW, vcl::Window* 
    m_pQSet4->Show();
    get(m_pSp4, "tol4");
    get(m_pLbColor4, "color4");
    m_pLbColor4->SetSlotId(SID_BMPMASK_COLOR);
    get(m_pCbxTrans, "cbx5");
    get(m_pLbColorTrans, "color5");

    //temp fill it to get optimal size
    m_pLbColor1->Fill(XColorList::GetStdColorList());
    m_pLbColor1->set_width_request(m_pLbColor1->get_preferred_size().Width());
    m_pLbColor1->Clear();
    //clear again
    m_pLbColorTrans->SelectEntry(Color(COL_BLACK));
    m_pLbColor1->SelectEntry(Color(COL_TRANSPARENT));
    m_pLbColor2->SelectEntry(Color(COL_TRANSPARENT));
    m_pLbColor3->SelectEntry(Color(COL_TRANSPARENT));
    m_pLbColor4->SelectEntry(Color(COL_TRANSPARENT));

    m_pTbxPipette->SetSelectHdl( LINK( pData, MaskData, PipetteHdl ) );
    m_pBtnExec->SetClickHdl( LINK( pData, MaskData, ExecHdl ) );
@@ -517,40 +521,6 @@ bool SvxBmpMask::Close()
    return SfxDockingWindow::Close();
}

bool SvxBmpMask::NeedsColorList() const
{
    return ( m_pLbColor1->GetEntryCount() == 0 );
}

void SvxBmpMask::SetColorList( const XColorListRef &pList )
{
    if ( pList.is() && ( pList != pColLst ) )
    {
        const OUString aTransp(BMP_RESID(RID_SVXDLG_BMPMASK_STR_TRANSP).toString());

        pColLst = pList;

        m_pLbColorTrans->Fill( pColLst );
        m_pLbColorTrans->SelectEntryPos( 0 );

        m_pLbColor1->Fill( pColLst );
        m_pLbColor1->InsertEntry( TRANSP_COL, aTransp, 0 );
        m_pLbColor1->SelectEntryPos( 0 );

        m_pLbColor2->Fill( pColLst );
        m_pLbColor2->InsertEntry( TRANSP_COL, aTransp, 0 );
        m_pLbColor2->SelectEntryPos( 0 );

        m_pLbColor3->Fill( pColLst );
        m_pLbColor3->InsertEntry( TRANSP_COL, aTransp, 0 );
        m_pLbColor3->SelectEntryPos( 0 );

        m_pLbColor4->Fill( pColLst );
        m_pLbColor4->InsertEntry( TRANSP_COL, aTransp, 0 );
        m_pLbColor4->SelectEntryPos( 0 );
    }
}

void SvxBmpMask::SetColor( const Color& rColor )
{
    aPipetteColor = rColor;
@@ -738,7 +708,7 @@ GDIMetaFile SvxBmpMask::ImpMask( const GDIMetaFile& rMtf )
            pMinB[i] = std::max( nVal - nTol, 0L );
            pMaxB[i] = std::min( nVal + nTol, 255L );

            pTrans[ i ] = ( pDstCols[ i ] == TRANSP_COL );
            pTrans[ i ] = (pDstCols[ i ] == COL_TRANSPARENT);
        }

        // Investigate actions and if necessary replace colors
@@ -1054,7 +1024,7 @@ Graphic SvxBmpMask::Mask( const Graphic& rGraphic )
                        for( sal_uInt16 i = 0; i < nCount; i++ )
                        {
                            // Do we have a transparent color?
                            if( pDstCols[i] == TRANSP_COL )
                            if (pDstCols[i] == COL_TRANSPARENT)
                            {
                                BitmapEx    aBmpEx( ImpMaskTransparent( aGraphic.GetBitmapEx(),
                                                                        pSrcCols[ i ], pTols[ i ] ) );
diff --git a/svx/source/dialog/bmpmask.hrc b/svx/source/dialog/bmpmask.hrc
index 1e446c4..bf05448 100644
--- a/svx/source/dialog/bmpmask.hrc
+++ b/svx/source/dialog/bmpmask.hrc
@@ -16,7 +16,7 @@
 *   except in compliance with the License. You may obtain a copy of
 *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 */
#define RID_SVXDLG_BMPMASK_STR_TRANSP   (RID_SVX_BMPMASK_START + 1)

#define RID_SVXDLG_BMPMASK_STR_PALETTE (RID_SVX_BMPMASK_START + 3)

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/dialog/bmpmask.src b/svx/source/dialog/bmpmask.src
index d154d7e..16bf943 100644
--- a/svx/source/dialog/bmpmask.src
+++ b/svx/source/dialog/bmpmask.src
@@ -22,11 +22,6 @@
#include "bmpmask.hrc"
#include "helpid.hrc"

String RID_SVXDLG_BMPMASK_STR_TRANSP
{
    Text [ en-US ] = "Transparent";
};

String RID_SVXDLG_BMPMASK_STR_PALETTE
{
    Text [ en-US ] = "Color Palette";
diff --git a/svx/source/dialog/fontwork.cxx b/svx/source/dialog/fontwork.cxx
index 166277c..b86ce46 100644
--- a/svx/source/dialog/fontwork.cxx
+++ b/svx/source/dialog/fontwork.cxx
@@ -20,6 +20,7 @@
#include <sfx2/module.hxx>
#include <sfx2/dispatch.hxx>

#include <svx/colorbox.hxx>
#include <svx/svdobj.hxx>
#include <svx/svdopath.hxx>
#include <svx/svdview.hxx>
@@ -791,23 +792,13 @@ IMPL_LINK_NOARG(SvxFontWorkDialog, InputTimoutHdl_Impl, Idle *, void)
            { &aDistItem, &aStartItem, &aShadowXItem, &aShadowYItem });
}

IMPL_LINK_NOARG(SvxFontWorkDialog, ColorSelectHdl_Impl, ListBox&, void)
IMPL_LINK_NOARG(SvxFontWorkDialog, ColorSelectHdl_Impl, SvxColorListBox&, void)
{
    XFormTextShadowColorItem aItem( "", m_pShadowColorLB->GetSelectEntryColor() );
    GetBindings().GetDispatcher()->ExecuteList(SID_FORMTEXT_SHDWCOLOR,
            SfxCallMode::RECORD, { &aItem });
}

void SvxFontWorkDialog::SetColorList(const XColorListRef &pList)
{
    if ( pList.is() && pList != pColorList )
    {
        pColorList = pList;
        m_pShadowColorLB->Clear();
        m_pShadowColorLB->Fill(pColorList);
    }
}

void SvxFontWorkDialog::ApplyImageList()
{
    if (nLastShadowTbxId == nShadowSlantId)
diff --git a/svx/source/engine3d/float3d.cxx b/svx/source/engine3d/float3d.cxx
index b5ed0de..80d065d 100644
--- a/svx/source/engine3d/float3d.cxx
+++ b/svx/source/engine3d/float3d.cxx
@@ -24,6 +24,7 @@
#include <svtools/colrdlg.hxx>
#include <vcl/msgbox.hxx>
#include <sfx2/viewsh.hxx>
#include <svx/colorbox.hxx>
#include <svx/xflclit.hxx>
#include <svx/svdmodel.hxx>
#include <svx/globl3d.hxx>
@@ -273,19 +274,20 @@ Svx3DWin::Svx3DWin(SfxBindings* pInBindings, SfxChildWindow *pCW, vcl::Window* p


    Link<ListBox&,void> aLink2 = LINK( this, Svx3DWin, SelectHdl );
    Link<SvxColorListBox&,void> aLink4 = LINK( this, Svx3DWin, SelectColorHdl );
    m_pLbMatFavorites->SetSelectHdl( aLink2 );
    m_pLbMatColor->SetSelectHdl( aLink2 );
    m_pLbMatEmission->SetSelectHdl( aLink2 );
    m_pLbMatSpecular->SetSelectHdl( aLink2 );
    m_pLbLight1->SetSelectHdl( aLink2 );
    m_pLbLight2->SetSelectHdl( aLink2 );
    m_pLbLight3->SetSelectHdl( aLink2 );
    m_pLbLight4->SetSelectHdl( aLink2 );
    m_pLbLight5->SetSelectHdl( aLink2 );
    m_pLbLight6->SetSelectHdl( aLink2 );
    m_pLbLight7->SetSelectHdl( aLink2 );
    m_pLbLight8->SetSelectHdl( aLink2 );
    m_pLbAmbientlight->SetSelectHdl( aLink2 );
    m_pLbMatColor->SetSelectHdl( aLink4 );
    m_pLbMatEmission->SetSelectHdl( aLink4 );
    m_pLbMatSpecular->SetSelectHdl( aLink4 );
    m_pLbLight1->SetSelectHdl( aLink4 );
    m_pLbLight2->SetSelectHdl( aLink4 );
    m_pLbLight3->SetSelectHdl( aLink4 );
    m_pLbLight4->SetSelectHdl( aLink4 );
    m_pLbLight5->SetSelectHdl( aLink4 );
    m_pLbLight6->SetSelectHdl( aLink4 );
    m_pLbLight7->SetSelectHdl( aLink4 );
    m_pLbLight8->SetSelectHdl( aLink4 );
    m_pLbAmbientlight->SetSelectHdl( aLink4 );
    m_pLbShademode->SetSelectHdl( aLink2 );

    Link<Edit&,void> aLink3 = LINK( this, Svx3DWin, ModifyHdl );
@@ -941,7 +943,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_1)).GetValue();
        ColorLB* pLb = m_pLbLight1;
        SvxColorListBox* pLb = m_pLbLight1;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -950,7 +952,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight1->GetSelectEntryCount() != 0 )
        if (!m_pLbLight1->IsNoSelection())
        {
            m_pLbLight1->SetNoSelection();
            bUpdate = true;
@@ -990,7 +992,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_2)).GetValue();
        ColorLB* pLb = m_pLbLight2;
        SvxColorListBox* pLb = m_pLbLight2;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -999,7 +1001,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight2->GetSelectEntryCount() != 0 )
        if (!m_pLbLight2->IsNoSelection())
        {
            m_pLbLight2->SetNoSelection();
            bUpdate = true;
@@ -1039,7 +1041,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_3)).GetValue();
        ColorLB* pLb = m_pLbLight3;
        SvxColorListBox* pLb = m_pLbLight3;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1048,7 +1050,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight3->GetSelectEntryCount() != 0 )
        if (!m_pLbLight3->IsNoSelection())
        {
            m_pLbLight3->SetNoSelection();
            bUpdate = true;
@@ -1088,7 +1090,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_4)).GetValue();
        ColorLB* pLb = m_pLbLight4;
        SvxColorListBox* pLb = m_pLbLight4;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1097,7 +1099,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight4->GetSelectEntryCount() != 0 )
        if (!m_pLbLight4->IsNoSelection())
        {
            m_pLbLight4->SetNoSelection();
            bUpdate = true;
@@ -1137,7 +1139,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_5)).GetValue();
        ColorLB* pLb = m_pLbLight5;
        SvxColorListBox* pLb = m_pLbLight5;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1146,7 +1148,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight5->GetSelectEntryCount() != 0 )
        if (!m_pLbLight5->IsNoSelection())
        {
            m_pLbLight5->SetNoSelection();
            bUpdate = true;
@@ -1186,7 +1188,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_6)).GetValue();
        ColorLB* pLb = m_pLbLight6;
        SvxColorListBox* pLb = m_pLbLight6;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1195,7 +1197,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight6->GetSelectEntryCount() != 0 )
        if (!m_pLbLight6->IsNoSelection())
        {
            m_pLbLight6->SetNoSelection();
            bUpdate = true;
@@ -1235,7 +1237,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_7)).GetValue();
        ColorLB* pLb = m_pLbLight7;
        SvxColorListBox* pLb = m_pLbLight7;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1244,7 +1246,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight7->GetSelectEntryCount() != 0 )
        if (!m_pLbLight7->IsNoSelection())
        {
            m_pLbLight7->SetNoSelection();
            bUpdate = true;
@@ -1284,7 +1286,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_LIGHTCOLOR_8)).GetValue();
        ColorLB* pLb = m_pLbLight8;
        SvxColorListBox* pLb = m_pLbLight8;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1293,7 +1295,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbLight8->GetSelectEntryCount() != 0 )
        if (!m_pLbLight8->IsNoSelection())
        {
            m_pLbLight8->SetNoSelection();
            bUpdate = true;
@@ -1333,7 +1335,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DSCENE_AMBIENTCOLOR)).GetValue();
        ColorLB* pLb = m_pLbAmbientlight;
        SvxColorListBox* pLb = m_pLbAmbientlight;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1342,7 +1344,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbAmbientlight->GetSelectEntryCount() != 0 )
        if (!m_pLbAmbientlight->IsNoSelection())
        {
            m_pLbAmbientlight->SetNoSelection();
            bUpdate = true;
@@ -1493,7 +1495,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const XFillColorItem&>(rAttrs.Get(XATTR_FILLCOLOR)).GetColorValue();
        ColorLB* pLb = m_pLbMatColor;
        SvxColorListBox* pLb = m_pLbMatColor;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1502,7 +1504,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbMatColor->GetSelectEntryCount() != 0 )
        if (!m_pLbMatColor->IsNoSelection())
        {
            m_pLbMatColor->SetNoSelection();
            bUpdate = true;
@@ -1514,7 +1516,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DOBJ_MAT_EMISSION)).GetValue();
        ColorLB* pLb = m_pLbMatEmission;
        SvxColorListBox* pLb = m_pLbMatEmission;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1523,7 +1525,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbMatEmission->GetSelectEntryCount() != 0 )
        if (!m_pLbMatEmission->IsNoSelection())
        {
            m_pLbMatEmission->SetNoSelection();
            bUpdate = true;
@@ -1535,7 +1537,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    if( eState != SfxItemState::DONTCARE )
    {
        aColor = static_cast<const SvxColorItem&>(rAttrs.Get(SDRATTR_3DOBJ_MAT_SPECULAR)).GetValue();
        ColorLB* pLb = m_pLbMatSpecular;
        SvxColorListBox* pLb = m_pLbMatSpecular;
        if( aColor != pLb->GetSelectEntryColor() )
        {
            LBSelectColor( pLb, aColor );
@@ -1544,7 +1546,7 @@ void Svx3DWin::Update( SfxItemSet& rAttrs )
    }
    else
    {
        if( m_pLbMatSpecular->GetSelectEntryCount() != 0 )
        if (!m_pLbMatSpecular->IsNoSelection())
        {
            m_pLbMatSpecular->SetNoSelection();
            bUpdate = true;
@@ -1852,7 +1854,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
    const SfxItemSet aLightItemSet(m_pCtlLightPreview->GetSvx3DLightControl().Get3DAttributes());

    // Light 1 color
    if( m_pLbLight1->GetSelectEntryCount() )
    if (!m_pLbLight1->IsNoSelection())
    {
        aColor = m_pLbLight1->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor1Item(aColor));
@@ -1877,7 +1879,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )


    // Light 2 color
    if( m_pLbLight2->GetSelectEntryCount() )
    if (!m_pLbLight2->IsNoSelection())
    {
        aColor = m_pLbLight2->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor2Item(aColor));
@@ -1901,7 +1903,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_2);

    // Light 3 color
    if( m_pLbLight3->GetSelectEntryCount() )
    if (!m_pLbLight3->IsNoSelection())
    {
        aColor = m_pLbLight3->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor3Item(aColor));
@@ -1925,7 +1927,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_3);

    // Light 4 color
    if( m_pLbLight4->GetSelectEntryCount() )
    if (!m_pLbLight4->IsNoSelection())
    {
        aColor = m_pLbLight4->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor4Item(aColor));
@@ -1949,7 +1951,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_4);

    // Light 5 color
    if( m_pLbLight5->GetSelectEntryCount() )
    if (!m_pLbLight5->IsNoSelection())
    {
        aColor = m_pLbLight5->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor5Item(aColor));
@@ -1973,7 +1975,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_5);

    // Light 6 color
    if( m_pLbLight6->GetSelectEntryCount() )
    if (!m_pLbLight6->IsNoSelection())
    {
        aColor = m_pLbLight6->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor6Item(aColor));
@@ -1997,7 +1999,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_6);

    // Light 7 color
    if( m_pLbLight7->GetSelectEntryCount() )
    if (!m_pLbLight7->IsNoSelection())
    {
        aColor = m_pLbLight7->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor7Item(aColor));
@@ -2021,7 +2023,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_7);

    // Light 8 color
    if( m_pLbLight8->GetSelectEntryCount() )
    if (!m_pLbLight8->IsNoSelection())
    {
        aColor = m_pLbLight8->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DLightcolor8Item(aColor));
@@ -2045,7 +2047,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DSCENE_LIGHTON_8);

    // Ambient light
    if( m_pLbAmbientlight->GetSelectEntryCount() )
    if (!m_pLbAmbientlight->IsNoSelection())
    {
        aColor = m_pLbAmbientlight->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DAmbientcolorItem(aColor));
@@ -2121,7 +2123,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )

// Material
    // Object color
    if( m_pLbMatColor->GetSelectEntryCount() )
    if (!m_pLbMatColor->IsNoSelection())
    {
        aColor = m_pLbMatColor->GetSelectEntryColor();
        rAttrs.Put( XFillColorItem( "", aColor) );
@@ -2132,7 +2134,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
    }

    // luminous color
    if( m_pLbMatEmission->GetSelectEntryCount() )
    if (!m_pLbMatEmission->IsNoSelection())
    {
        aColor = m_pLbMatEmission->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DMaterialEmissionItem(aColor));
@@ -2141,7 +2143,7 @@ void Svx3DWin::GetAttr( SfxItemSet& rAttrs )
        rAttrs.InvalidateItem(SDRATTR_3DOBJ_MAT_EMISSION);

    // Specular
    if( m_pLbMatSpecular->GetSelectEntryCount() )
    if (!m_pLbMatSpecular->IsNoSelection())
    {
        aColor = m_pLbMatSpecular->GetSelectEntryColor();
        rAttrs.Put(makeSvx3DMaterialSpecularItem(aColor));
@@ -2302,7 +2304,7 @@ IMPL_LINK( Svx3DWin, ClickViewTypeHdl, Button*, pBtn, void )
        {
            m_pFLLight->Show();

            ColorLB* pLb = GetLbByButton();
            SvxColorListBox* pLb = GetLbByButton();
            if( pLb )
                pLb->Show();

@@ -2388,7 +2390,7 @@ IMPL_LINK( Svx3DWin, ClickHdl, Button *, pButton, void )
                 pBtn == m_pBtnLight8 )
        {
            // Lighting
            ColorLB* pLb = GetLbByButton( pBtn );
            SvxColorListBox* pLb = GetLbByButton( pBtn );
            pLb->Show();

            if( pBtn->IsChecked() )
@@ -2513,7 +2515,7 @@ IMPL_LINK( Svx3DWin, ClickHdl, Button *, pButton, void )
IMPL_LINK( Svx3DWin, ClickColorHdl, Button *, pBtn, void)
{
    SvColorDialog aColorDlg( this );
    ColorLB* pLb;
    SvxColorListBox* pLb;

    if( pBtn == m_pBtnLightColor )
        pLb = GetLbByButton();
@@ -2532,12 +2534,11 @@ IMPL_LINK( Svx3DWin, ClickColorHdl, Button *, pBtn, void)
    if( aColorDlg.Execute() == RET_OK )
    {
        aColor = aColorDlg.GetColor();
        if( LBSelectColor( pLb, aColor ) )
            SelectHdl( *pLb );
        LBSelectColor(pLb, aColor);
        SelectColorHdl(*pLb);
    }
}


IMPL_LINK( Svx3DWin, SelectHdl, ListBox&, rListBox, void )
{
    bool bUpdatePreview = false;
@@ -2604,9 +2605,20 @@ IMPL_LINK( Svx3DWin, SelectHdl, ListBox&, rListBox, void )

        bUpdatePreview = true;
    }
    else if( &rListBox == m_pLbMatColor ||
             &rListBox == m_pLbMatEmission ||
             &rListBox == m_pLbMatSpecular )
    else if (&rListBox == m_pLbShademode)
        bUpdatePreview = true;

    if( bUpdatePreview )
        UpdatePreview();
}

IMPL_LINK( Svx3DWin, SelectColorHdl, SvxColorListBox&, rListBox, void )
{
    bool bUpdatePreview = false;

    if( &rListBox == m_pLbMatColor ||
        &rListBox == m_pLbMatEmission ||
        &rListBox == m_pLbMatSpecular )
    {
        m_pLbMatFavorites->SelectEntryPos( 0 );
        bUpdatePreview = true;
@@ -2627,8 +2639,6 @@ IMPL_LINK( Svx3DWin, SelectHdl, ListBox&, rListBox, void )
    {
        bUpdatePreview = true;
    }
    else if (&rListBox == m_pLbShademode)
        bUpdatePreview = true;

    if( bUpdatePreview )
        UpdatePreview();
@@ -2665,7 +2675,7 @@ IMPL_LINK( Svx3DWin, ModifyHdl, Edit&, rField, void )
void Svx3DWin::ClickLight(PushButton& rBtn)
{
    sal_uInt16 nLightSource = GetLightSource( &rBtn );
    ColorLB* pLb = GetLbByButton( &rBtn );
    SvxColorListBox* pLb = GetLbByButton( &rBtn );
    Color aColor( pLb->GetSelectEntryColor() );
    SfxItemSet aLightItemSet(m_pCtlLightPreview->GetSvx3DLightControl().Get3DAttributes());
    const bool bOnOff(GetUILightState( static_cast<const ImageButton&>(rBtn) ));
@@ -2756,35 +2766,28 @@ IMPL_LINK_NOARG(Svx3DWin, ChangeSelectionCallbackHdl, SvxLightCtl3D*, void)
    }
}


// Method to ensure that the LB is also associated with a color
// returns true if color was added

bool Svx3DWin::LBSelectColor( ColorLB* pLb, const Color& rColor )
namespace
{
    bool bRet = false;

    pLb->SetNoSelection();
    pLb->SelectEntry( rColor );
    if( pLb->GetSelectEntryCount() == 0 )
    OUString lcl_makeColorName(const Color& rColor)
    {
        OUString aStr(SVX_RESSTR(RID_SVXFLOAT3D_FIX_R));

        aStr += OUString::number((sal_Int32)rColor.GetRed());
        aStr += " ";
        aStr += SVX_RESSTR(RID_SVXFLOAT3D_FIX_G);
        aStr += OUString::number((sal_Int32)rColor.GetGreen());
        aStr += " ";
        aStr += SVX_RESSTR(RID_SVXFLOAT3D_FIX_B);
        aStr += OUString::number((sal_Int32)rColor.GetBlue());

        const sal_Int32 nPos = pLb->InsertEntry( rColor, aStr );
        pLb->SelectEntryPos( nPos );
        bRet = true;
        OUString aStr = SVX_RESSTR(RID_SVXFLOAT3D_FIX_R) +
                        OUString::number(rColor.GetRed()) +
                        " " +
                        SVX_RESSTR(RID_SVXFLOAT3D_FIX_G) +
                        OUString::number(rColor.GetGreen()) +
                        " " +
                        SVX_RESSTR(RID_SVXFLOAT3D_FIX_B) +
                        OUString::number(rColor.GetBlue());
        return aStr;
    }
    return bRet;
}

// Method to ensure that the LB is also associated with a color
void Svx3DWin::LBSelectColor( SvxColorListBox* pLb, const Color& rColor )
{
    pLb->SetNoSelection();
    pLb->SelectEntry(std::make_pair(rColor, lcl_makeColorName(rColor)));
}

void Svx3DWin::UpdatePreview()
{
@@ -2808,22 +2811,8 @@ void Svx3DWin::DocumentReload()
    mpRemember2DAttributes = nullptr;
}


void Svx3DWin::InitColorLB( const SdrModel* pDoc )
void Svx3DWin::InitColorLB()
{
    m_pLbLight1->Fill( pDoc->GetColorList() );
    m_pLbLight2->CopyEntries( *m_pLbLight1 );
    m_pLbLight3->CopyEntries( *m_pLbLight1 );
    m_pLbLight4->CopyEntries( *m_pLbLight1 );
    m_pLbLight5->CopyEntries( *m_pLbLight1 );
    m_pLbLight6->CopyEntries( *m_pLbLight1 );
    m_pLbLight7->CopyEntries( *m_pLbLight1 );
    m_pLbLight8->CopyEntries( *m_pLbLight1 );
    m_pLbAmbientlight->CopyEntries( *m_pLbLight1 );
    m_pLbMatColor->CopyEntries( *m_pLbLight1 );
    m_pLbMatEmission->CopyEntries( *m_pLbLight1 );
    m_pLbMatSpecular->CopyEntries( *m_pLbLight1 );

    // First...
    Color aColWhite( COL_WHITE );
    Color aColBlack( COL_BLACK );
@@ -2888,9 +2877,9 @@ sal_uInt16 Svx3DWin::GetLightSource( const PushButton* pBtn )
};


ColorLB* Svx3DWin::GetLbByButton( const PushButton* pBtn )
SvxColorListBox* Svx3DWin::GetLbByButton( const PushButton* pBtn )
{
    ColorLB* pLb = nullptr;
    SvxColorListBox* pLb = nullptr;

    if( pBtn == nullptr )
    {
diff --git a/svx/source/engine3d/float3d.src b/svx/source/engine3d/float3d.src
index 7341170..43a4885 100644
--- a/svx/source/engine3d/float3d.src
+++ b/svx/source/engine3d/float3d.src
@@ -41,21 +41,6 @@ String RID_SVXFLOAT3D_FAVORITE
    Text [ en-US ] = "Favorite";
};

String RID_SVXFLOAT3D_FIX_X
{
    Text [ en-US ] = "X";
};

String RID_SVXFLOAT3D_FIX_Y
{
    Text [ en-US ] = "Y";
};

String RID_SVXFLOAT3D_FIX_Z
{
    Text [ en-US ] = "Z";
};

String RID_SVXFLOAT3D_FIX_R
{
    Text [ en-US ] = "R:";
diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
index 5f90b22..318b95b 100644
--- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
+++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
@@ -167,10 +167,11 @@ void AreaPropertyPanelBase::Initialize()
    mpLbFillType->SetSelectHdl( LINK( this, AreaPropertyPanelBase, SelectFillTypeHdl ) );

    Link<ListBox&,void> aLink = LINK( this, AreaPropertyPanelBase, SelectFillAttrHdl );
    Link<SvxColorListBox&,void> aLink3 = LINK( this, AreaPropertyPanelBase, SelectFillColorHdl );
    mpLbFillAttr->SetSelectHdl( aLink );
    mpGradientStyle->SetSelectHdl( aLink );
    mpLbFillGradFrom->SetSelectHdl( aLink );
    mpLbFillGradTo->SetSelectHdl( aLink );
    mpLbFillGradFrom->SetSelectHdl( aLink3 );
    mpLbFillGradTo->SetSelectHdl( aLink3 );
    mpMTRAngle->SetModifyHdl(LINK(this,AreaPropertyPanelBase, ChangeGradientAngle));

    mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl));
@@ -296,61 +297,33 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
            mpToolBoxColor->Hide();
            mpBmpImport->Hide();

            const SvxColorListItem* pColorListItem = static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE));
            if(pColorListItem)
            mpLbFillAttr->Enable();
            mpLbFillGradTo->Enable();
            mpLbFillGradFrom->Enable();
            mpGradientStyle->Enable();
            mpMTRAngle->Enable();
            mpLbFillAttr->Clear();

            if (LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
            {
                mpLbFillAttr->Enable();
                mpLbFillGradTo->Enable();
                mpLbFillGradFrom->Enable();
                mpGradientStyle->Enable();
                mpMTRAngle->Enable();
                mpLbFillAttr->Clear();
                mpLbFillGradTo->Clear();
                mpLbFillGradFrom->Clear();
                mpLbFillGradTo->Fill(pColorListItem->GetColorList());
                mpLbFillGradFrom->Fill(pColorListItem->GetColorList());
                const SvxGradientListItem aItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));

                mpLbFillGradFrom->AdaptDropDownLineCountToMaximum();
                mpLbFillGradTo->AdaptDropDownLineCountToMaximum();

                if(LISTBOX_ENTRY_NOTFOUND != mnLastPosGradient)
                if(mnLastPosGradient < aItem.GetGradientList()->Count())
                {
                    const SvxGradientListItem aItem(*static_cast<const SvxGradientListItem*>(pSh->GetItem(SID_GRADIENT_LIST)));
                    const XGradient aGradient = aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
                    const XFillGradientItem aXFillGradientItem(aGradient);

                    if(mnLastPosGradient < aItem.GetGradientList()->Count())
                    {
                        const XGradient aGradient = aItem.GetGradientList()->GetGradient(mnLastPosGradient)->GetGradient();
                        const XFillGradientItem aXFillGradientItem(aGradient);
                    // #i122676# change FillStyle and Gradient in one call
                    XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT);
                    setFillStyleAndGradient(&aXFillStyleItem, aXFillGradientItem);
                    mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
                    mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());

                        // #i122676# change FillStyle and Gradient in one call
                        XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT);
                        setFillStyleAndGradient(&aXFillStyleItem, aXFillGradientItem);
                        mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
                        if(mpLbFillGradFrom->GetSelectEntryCount() == 0)
                        {
                            mpLbFillGradFrom->InsertEntry(aGradient.GetStartColor(), OUString());
                            mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
                        }
                        mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
                        if(mpLbFillGradTo->GetSelectEntryCount() == 0)
                        {
                            mpLbFillGradTo->InsertEntry(aGradient.GetEndColor(), OUString());
                            mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
                        }

                        mpMTRAngle->SetValue(aGradient.GetAngle() / 10);
                        css::awt::GradientStyle eXGS = aGradient.GetGradientStyle();
                        mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( eXGS ));
                    }
                    mpMTRAngle->SetValue(aGradient.GetAngle() / 10);
                    css::awt::GradientStyle eXGS = aGradient.GetGradientStyle();
                    mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( eXGS ));
                }
            }
            else
            {
                mpLbFillGradFrom->Disable();
                mpLbFillGradTo->Disable();
                mpMTRAngle->Disable();
                mpGradientStyle->Disable();
            }
            break;
        }
        case HATCH:
@@ -475,6 +448,11 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
    }
}

IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillColorHdl, SvxColorListBox&, void)
{
    SelectFillAttrHdl_Impl();
}

IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillAttrHdl, ListBox&, void)
{
    SelectFillAttrHdl_Impl();
@@ -1176,28 +1154,15 @@ void AreaPropertyPanelBase::Update()
                    mpLbFillAttr->Enable();
                    mpLbFillAttr->Clear();
                    mpLbFillAttr->Fill(aItem.GetGradientList());
                    const SvxColorListItem aColorItem(*static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE)));
                    mpLbFillGradFrom->Fill(aColorItem.GetColorList());
                    mpLbFillGradTo->Fill(aColorItem.GetColorList());
                    mpLbFillGradTo->SetNoSelection();
                    mpLbFillGradFrom->SetNoSelection();
                    if(mpFillGradientItem)
                    if (mpFillGradientItem)
                    {
                        const OUString aString(mpFillGradientItem->GetName());
                        mpLbFillAttr->SelectEntry(aString);
                        const XGradient aGradient = mpFillGradientItem->GetGradientValue();
                        mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
                        if(mpLbFillGradFrom->GetSelectEntryCount() == 0)
                        {
                            mpLbFillGradFrom->InsertEntry(aGradient.GetStartColor(), OUString());
                            mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
                        }
                        mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
                        if(mpLbFillGradTo->GetSelectEntryCount() == 0)
                        {
                            mpLbFillGradTo->InsertEntry(aGradient.GetEndColor(), OUString());
                            mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
                        }
                        mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( aGradient.GetGradientStyle() ));
                        if(mpGradientStyle->GetSelectEntryPos() == (sal_Int32)GradientStyle::Radial)
                            mpMTRAngle->Disable();
diff --git a/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx b/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx
index a1ea387..0766550 100644
--- a/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx
+++ b/svx/source/sidebar/shadow/ShadowPropertyPanel.cxx
@@ -10,6 +10,7 @@
#include <ShadowPropertyPanel.hxx>
#include <comphelper/string.hxx>
#include <sfx2/sidebar/ControlFactory.hxx>
#include <svx/colorbox.hxx>
#include <svx/dialogs.hrc>
#include <svx/dialmgr.hxx>
#include <sfx2/objsh.hxx>
@@ -122,25 +123,18 @@ void ShadowPropertyPanel::dispose()

void ShadowPropertyPanel::Initialize()
{
    SfxObjectShell* pSh = SfxObjectShell::Current();

    const SvxColorListItem* pColorListItem = static_cast<const SvxColorListItem*>(pSh ? pSh->GetItem(SID_COLOR_TABLE) : nullptr);
    if (pColorListItem)
    {
        mpLBShadowColor->Fill(pColorListItem->GetColorList());
        mpShowShadow->SetState( TRISTATE_FALSE );
        mpShowShadow->SetClickHdl( LINK(this, ShadowPropertyPanel, ClickShadowHdl ) );
        mpShadowTransMetric->SetModifyHdl( LINK(this, ShadowPropertyPanel, ModifyShadowTransMetricHdl) );
        mpLBShadowColor->SetSelectHdl( LINK( this, ShadowPropertyPanel, ModifyShadowColorHdl ) );
        mpShadowAngle->SetModifyHdl( LINK(this, ShadowPropertyPanel, ModifyShadowDistanceHdl) );
        mpShadowDistance->SetModifyHdl( LINK(this, ShadowPropertyPanel, ModifyShadowDistanceHdl) );
        mpShadowTransSlider->SetRange(Range(0,100));
        mpShadowTransSlider->SetUpdateMode(true);
        mpShadowTransSlider->SetSlideHdl( LINK(this, ShadowPropertyPanel, ModifyShadowTransSliderHdl) );
        for(sal_uInt16 i = 0; i <= 20 ; i++)
            mpShadowDistance->InsertValue(i*2,FUNIT_POINT);
        InsertAngleValues();
    }
    mpShowShadow->SetState( TRISTATE_FALSE );
    mpShowShadow->SetClickHdl( LINK(this, ShadowPropertyPanel, ClickShadowHdl ) );
    mpShadowTransMetric->SetModifyHdl( LINK(this, ShadowPropertyPanel, ModifyShadowTransMetricHdl) );
    mpLBShadowColor->SetSelectHdl( LINK( this, ShadowPropertyPanel, ModifyShadowColorHdl ) );
    mpShadowAngle->SetModifyHdl( LINK(this, ShadowPropertyPanel, ModifyShadowDistanceHdl) );
    mpShadowDistance->SetModifyHdl( LINK(this, ShadowPropertyPanel, ModifyShadowDistanceHdl) );
    mpShadowTransSlider->SetRange(Range(0,100));
    mpShadowTransSlider->SetUpdateMode(true);
    mpShadowTransSlider->SetSlideHdl( LINK(this, ShadowPropertyPanel, ModifyShadowTransSliderHdl) );
    for(sal_uInt16 i = 0; i <= 20 ; i++)
        mpShadowDistance->InsertValue(i*2,FUNIT_POINT);
    InsertAngleValues();
}

IMPL_LINK_NOARG(ShadowPropertyPanel, ClickShadowHdl, Button*, void)
@@ -159,7 +153,7 @@ IMPL_LINK_NOARG(ShadowPropertyPanel, ClickShadowHdl, Button*, void)
    }
}

IMPL_LINK_NOARG(ShadowPropertyPanel, ModifyShadowColorHdl, ListBox&, void)
IMPL_LINK_NOARG(ShadowPropertyPanel, ModifyShadowColorHdl, SvxColorListBox&, void)
{
    XColorItem aItem(makeSdrShadowColorItem(mpLBShadowColor->GetSelectEntryColor()));
    GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_SHADOW_COLOR,
@@ -320,9 +314,6 @@ void ShadowPropertyPanel::NotifyItemUpdate(
                {
                   mpLBShadowColor->SelectEntry(pColorItem->GetColorValue());
                }
                else
                {
                }
            }
        }
        break;
diff --git a/svx/source/sidebar/shadow/ShadowPropertyPanel.hxx b/svx/source/sidebar/shadow/ShadowPropertyPanel.hxx
index 7e72886..f3fd1c7 100644
--- a/svx/source/sidebar/shadow/ShadowPropertyPanel.hxx
+++ b/svx/source/sidebar/shadow/ShadowPropertyPanel.hxx
@@ -25,6 +25,7 @@
#include <sfx2/request.hxx>
#include <svx/dlgctrl.hxx>

class SvxColorListBox;

namespace svx { namespace sidebar {

@@ -60,10 +61,10 @@ public:
        SfxBindings* pBindings);

private:
    VclPtr<CheckBox>   mpShowShadow;
    VclPtr<MetricBox>       mpShadowDistance;
    VclPtr<ColorLB>       mpLBShadowColor;
    VclPtr<MetricBox>       mpShadowAngle;
    VclPtr<CheckBox>      mpShowShadow;
    VclPtr<MetricBox>     mpShadowDistance;
    VclPtr<SvxColorListBox> mpLBShadowColor;
    VclPtr<MetricBox>     mpShadowAngle;
    VclPtr<FixedText>     mpFTAngle;
    VclPtr<FixedText>     mpFTDistance;
    VclPtr<FixedText>     mpFTTransparency;
@@ -84,7 +85,7 @@ private:
    void SetTransparencyValue(long);
    void UpdateControls();
    DECL_LINK(ClickShadowHdl, Button*, void);
    DECL_LINK(ModifyShadowColorHdl, ListBox&, void);
    DECL_LINK(ModifyShadowColorHdl, SvxColorListBox&, void);
    DECL_LINK(ModifyShadowTransMetricHdl, Edit&, void);
    DECL_LINK(ModifyShadowDistanceHdl, Edit&, void);
    DECL_LINK(ModifyShadowTransSliderHdl, Slider*, void);
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index 3ba0485..7f1d5a1 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -254,18 +254,21 @@ void PaletteManager::SetLastColor(const Color& rLastColor)
    mLastColor = rLastColor;
}

void PaletteManager::AddRecentColor(const Color& rRecentColor, const OUString& rName)
void PaletteManager::AddRecentColor(const Color& rRecentColor, const OUString& rName, bool bFront)
{
    auto itColor = std::find_if(maRecentColors.begin(),
                                maRecentColors.end(),
                                [rRecentColor] (const color_and_name &a) { return a.first == rRecentColor; });
                                [rRecentColor] (const NamedColor &a) { return a.first == rRecentColor; });
    // if recent color to be added is already in list, remove it
    if( itColor != maRecentColors.end() )
        maRecentColors.erase( itColor );

    maRecentColors.push_front(std::make_pair(rRecentColor, rName));
    if( maRecentColors.size() > mnMaxRecentColors )
    if (maRecentColors.size() == mnMaxRecentColors)
        maRecentColors.pop_back();
    if (bFront)
        maRecentColors.push_front(std::make_pair(rRecentColor, rName));
    else
        maRecentColors.push_back(std::make_pair(rRecentColor, rName));
    css::uno::Sequence< sal_Int32 > aColorList(maRecentColors.size());
    css::uno::Sequence< OUString > aColorNameList(maRecentColors.size());
    for (size_t i = 0; i < maRecentColors.size(); ++i)
@@ -285,7 +288,7 @@ void PaletteManager::SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater)
    mLastColor = mpBtnUpdater->GetCurrentColor();
}

void PaletteManager::SetColorSelectFunction(const std::function<void(const OUString&, const Color&)>& aColorSelectFunction)
void PaletteManager::SetColorSelectFunction(const std::function<void(const OUString&, const NamedColor&)>& aColorSelectFunction)
{
    maColorSelectFunction = aColorSelectFunction;
}
@@ -302,12 +305,14 @@ void PaletteManager::PopupColorPicker(const OUString& aCommand)
        if (mpBtnUpdater)
            mpBtnUpdater->Update( aColorDlg.GetColor() );
        mLastColor = aColorDlg.GetColor();
        AddRecentColor(mLastColor, ("#" + mLastColor.AsRGBHexString().toAsciiUpperCase()));
        maColorSelectFunction(aCommandCopy, mLastColor);
        OUString sColorName = ("#" + mLastColor.AsRGBHexString().toAsciiUpperCase());
        NamedColor aNamedColor = std::make_pair(mLastColor, sColorName);
        AddRecentColor(mLastColor, sColorName);
        maColorSelectFunction(aCommandCopy, aNamedColor);
    }
}

void PaletteManager::DispatchColorCommand(const OUString& aCommand, const Color& rColor)
void PaletteManager::DispatchColorCommand(const OUString& aCommand, const NamedColor& rColor)
{
    using namespace css::uno;
    using namespace css::frame;
@@ -323,7 +328,7 @@ void PaletteManager::DispatchColorCommand(const OUString& aCommand, const Color&

        Sequence<PropertyValue> aArgs(1);
        aArgs[0].Name = aObj.GetURLPath();
        aArgs[0].Value = makeAny(sal_Int32(rColor.GetColor()));
        aArgs[0].Value = makeAny(sal_Int32(rColor.first.GetColor()));

        URL aTargetURL;
        aTargetURL.Complete = aCommand;
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 5d3b359..6650163 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -51,6 +51,7 @@
#include <sfx2/childwin.hxx>
#include <sfx2/viewfrm.hxx>
#include <unotools/fontoptions.hxx>
#include <vcl/builderfactory.hxx>
#include <vcl/mnemonic.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
@@ -85,6 +86,7 @@
#include <editeng/svxfont.hxx>
#include <editeng/cmapitem.hxx>
#include <svx/colorwindow.hxx>
#include <svx/colorbox.hxx>
#include "svx/drawitem.hxx"
#include <svx/tbcontrl.hxx>
#include "svx/dlgutil.hxx"
@@ -1245,13 +1247,13 @@ void SvxFontNameBox_Impl::Select()
#endif


SvxColorWindow::SvxColorWindow( const OUString&            rCommand,
                                          PaletteManager&            rPaletteManager,
                                          BorderColorStatus&         rBorderColorStatus,
                                          sal_uInt16                 nSlotId,
                                          const Reference< XFrame >& rFrame,
                                          vcl::Window*                    pParentWindow,
                                          std::function<void(const OUString&, const Color&)> const & aFunction):
SvxColorWindow::SvxColorWindow(const OUString&            rCommand,
                               PaletteManager&            rPaletteManager,
                               BorderColorStatus&         rBorderColorStatus,
                               sal_uInt16                 nSlotId,
                               const Reference< XFrame >& rFrame,
                               vcl::Window*               pParentWindow,
                               std::function<void(const OUString&, const NamedColor&)> const & aFunction):

    SfxPopupWindow( nSlotId, pParentWindow,
                    "palette_popup_window", "svx/ui/colorwindow.ui",
@@ -1264,6 +1266,7 @@ SvxColorWindow::SvxColorWindow( const OUString&            rCommand,
{
    get(mpPaletteListBox,     "palette_listbox");
    get(mpButtonAutoColor,    "auto_color_button");
    get(mpButtonNoneColor,    "none_color_button");
    get(mpButtonPicker,       "color_picker_button");
    get(mpColorSet,           "colorset");
    get(mpRecentColorSet,     "recent_colorset");
@@ -1278,6 +1281,16 @@ SvxColorWindow::SvxColorWindow( const OUString&            rCommand,
        case SID_BACKGROUND_COLOR:
        case SID_ATTR_CHAR_BACK_COLOR:
        {
            mpButtonAutoColor->SetText( SVX_RESSTR( RID_SVXSTR_NOFILL ) );
            break;
        }
        case SID_AUTHOR_COLOR:
        {
            mpButtonAutoColor->SetText( SVX_RESSTR( RID_SVXSTR_BY_AUTHOR ) );
            break;
        }
        case SID_BMPMASK_COLOR:
        {
            mpButtonAutoColor->SetText( SVX_RESSTR( RID_SVXSTR_TRANSPARENT ) );
            break;
        }
@@ -1353,6 +1366,7 @@ SvxColorWindow::SvxColorWindow( const OUString&            rCommand,
    SelectPaletteHdl( *mpPaletteListBox );

    mpButtonAutoColor->SetClickHdl( LINK( this, SvxColorWindow, AutoColorClickHdl ) );
    mpButtonNoneColor->SetClickHdl( LINK( this, SvxColorWindow, AutoColorClickHdl ) );
    mpButtonPicker->SetClickHdl( LINK( this, SvxColorWindow, OpenPickerClickHdl ) );

    mpColorSet->SetSelectHdl( LINK( this, SvxColorWindow, SelectHdl ) );
@@ -1378,6 +1392,11 @@ SvxColorWindow::SvxColorWindow( const OUString&            rCommand,
    }
}

void SvxColorWindow::ShowNoneButton()
{
    mpButtonNoneColor->Show();
}

SvxColorWindow::~SvxColorWindow()
{
    disposeOnce();
@@ -1389,6 +1408,7 @@ void SvxColorWindow::dispose()
    mpRecentColorSet.clear();
    mpPaletteListBox.clear();
    mpButtonAutoColor.clear();
    mpButtonNoneColor.clear();
    mpButtonPicker.clear();
    mpAutomaticSeparator.clear();
    SfxPopupWindow::dispose();
@@ -1399,11 +1419,29 @@ void SvxColorWindow::KeyInput( const KeyEvent& rKEvt )
    mpColorSet->KeyInput(rKEvt);
}

NamedColor SvxColorWindow::GetSelectEntryColor(ValueSet* pColorSet)
{
    Color aColor = pColorSet->GetItemColor(pColorSet->GetSelectItemId());
    OUString sColorName = pColorSet->GetItemText(pColorSet->GetSelectItemId());
    return std::make_pair(aColor, sColorName);
}

NamedColor SvxColorWindow::GetSelectEntryColor() const
{
    if (!mpColorSet->IsNoSelection())
        return GetSelectEntryColor(mpColorSet);
    if (!mpRecentColorSet->IsNoSelection())
        return GetSelectEntryColor(mpRecentColorSet);
    if (mpButtonNoneColor->GetStyle() & WB_DEFBUTTON)
        return GetNoneColor();
    return GetAutoColor();
}

IMPL_LINK(SvxColorWindow, SelectHdl, ValueSet*, pColorSet, void)
{
    VclPtr<SvxColorWindow> xThis(this);

    Color aColor = pColorSet->GetItemColor( pColorSet->GetSelectItemId() );
    NamedColor aNamedColor = GetSelectEntryColor(pColorSet);
    /*  #i33380# DR 2004-09-03 Moved the following line above the Dispatch() calls.
        This instance may be deleted in the meantime (i.e. when a dialog is opened
        while in Dispatch()), accessing members will crash in this case. */
@@ -1411,7 +1449,7 @@ IMPL_LINK(SvxColorWindow, SelectHdl, ValueSet*, pColorSet, void)

    if ( pColorSet != mpRecentColorSet )
    {
         mrPaletteManager.AddRecentColor(aColor, pColorSet->GetItemText(pColorSet->GetSelectItemId()));
         mrPaletteManager.AddRecentColor(aNamedColor.first, aNamedColor.second);
         if ( !IsInPopupMode() )
            mrPaletteManager.ReloadRecentColorSet( *mpRecentColorSet );
    }
@@ -1419,9 +1457,9 @@ IMPL_LINK(SvxColorWindow, SelectHdl, ValueSet*, pColorSet, void)
    if ( IsInPopupMode() )
        EndPopupMode();

    maSelectedLink.Call(aColor);
    maSelectedLink.Call(aNamedColor);

    maColorSelectFunction(maCommand, aColor);
    maColorSelectFunction(maCommand, aNamedColor);
}

IMPL_LINK_NOARG(SvxColorWindow, SelectPaletteHdl, ListBox&, void)
@@ -1432,37 +1470,64 @@ IMPL_LINK_NOARG(SvxColorWindow, SelectPaletteHdl, ListBox&, void)
    mpColorSet->layoutToGivenHeight(mpColorSet->GetSizePixel().Height(), mrPaletteManager.GetColorCount());
}

IMPL_LINK_NOARG(SvxColorWindow, AutoColorClickHdl, Button*, void)
NamedColor SvxColorWindow::GetNoneColor() const
{
    VclPtr<SvxColorWindow> xThis(this);

    Color aColor;
    switch ( theSlotId )
    OUString sColorName;
    if (theSlotId == SID_AUTHOR_COLOR)
    {
        aColor = COL_NONE_COLOR;
        sColorName = SVX_RESSTR(RID_SVXSTR_NONE);
    }

    return std::make_pair(aColor, sColorName);
}

NamedColor SvxColorWindow::GetAutoColor() const
{
    Color aColor;
    OUString sColorName;
    switch (theSlotId)
    {
        case SID_ATTR_CHAR_COLOR_BACKGROUND:
        case SID_BACKGROUND_COLOR:
        case SID_ATTR_CHAR_BACK_COLOR:
        {
            aColor = COL_TRANSPARENT;
            sColorName = SVX_RESSTR(RID_SVXSTR_NOFILL);
            break;
        }
        case SID_AUTHOR_COLOR:
            aColor = COL_TRANSPARENT;
            sColorName = SVX_RESSTR(RID_SVXSTR_BY_AUTHOR);
            break;
        case SID_BMPMASK_COLOR:
            aColor = COL_TRANSPARENT;
            sColorName = SVX_RESSTR(RID_SVXSTR_TRANSPARENT);
            break;
        case SID_ATTR_CHAR_COLOR:
        case SID_ATTR_CHAR_COLOR2:
        case SID_EXTRUSION_3D_COLOR:
        {
            aColor = COL_AUTO;
            sColorName = SVX_RESSTR(RID_SVXSTR_AUTOMATIC);
            break;
        }
    }

    return std::make_pair(aColor, sColorName);
}

IMPL_LINK(SvxColorWindow, AutoColorClickHdl, Button*, pButton, void)
{
    VclPtr<SvxColorWindow> xThis(this);

    NamedColor aNamedColor = pButton == mpButtonAutoColor ? GetAutoColor() : GetNoneColor();

    mpRecentColorSet->SetNoSelection();

    if ( IsInPopupMode() )
        EndPopupMode();

    maSelectedLink.Call(aColor);
    maSelectedLink.Call(aNamedColor);

    maColorSelectFunction(maCommand, aColor);
    maColorSelectFunction(maCommand, aNamedColor);
}

IMPL_LINK_NOARG(SvxColorWindow, OpenPickerClickHdl, Button*, void)
@@ -1479,6 +1544,23 @@ void SvxColorWindow::StartSelection()
    mpColorSet->StartSelection();
}

void SvxColorWindow::SetNoSelection()
{
    mpColorSet->SetNoSelection();
    mpRecentColorSet->SetNoSelection();
    mpButtonAutoColor->set_property("has-default", "false");
    mpButtonNoneColor->set_property("has-default", "false");
}

bool SvxColorWindow::IsNoSelection() const
{
    if (!mpColorSet->IsNoSelection())
        return false;
    if (!mpRecentColorSet->IsNoSelection())
        return false;
    return !mpButtonAutoColor->IsVisible() && !mpButtonNoneColor->IsVisible();
}

void SvxColorWindow::statusChanged( const css::frame::FeatureStateEvent& rEvent )
{
    if ( rEvent.IsEnabled && rEvent.FeatureURL.Complete == ".uno:ColorTableState"
@@ -1489,34 +1571,76 @@ void SvxColorWindow::statusChanged( const css::frame::FeatureStateEvent& rEvent 
    }
    else
    {
        mpColorSet->SetNoSelection();
        Color aColor( COL_TRANSPARENT );
        Color aColor(COL_TRANSPARENT);

        if ( mrBorderColorStatus.statusChanged( rEvent ) )
        if (mrBorderColorStatus.statusChanged(rEvent))
        {
            aColor = mrBorderColorStatus.GetColor();
        }
        else if ( rEvent.IsEnabled )
        else if (rEvent.IsEnabled)
        {
            sal_Int32 nValue;
            if ( rEvent.State >>= nValue )
            if (rEvent.State >>= nValue)
                aColor = nValue;
        }

        if ( aColor == COL_TRANSPARENT )
            return;

        for ( size_t i = 1; i <= mpColorSet->GetItemCount(); ++i )
        {
            if ( aColor == mpColorSet->GetItemColor(i) )
            {
                mpColorSet->SelectItem(i);
                break;
            }
        }
        SelectEntry(aColor);
    }
}

bool SvxColorWindow::SelectValueSetEntry(SvxColorValueSet* pColorSet, const Color& rColor)
{
    for (size_t i = 1; i <= pColorSet->GetItemCount(); ++i)
    {
        if (rColor == pColorSet->GetItemColor(i))
        {
            pColorSet->SelectItem(i);
            return true;
        }
    }
    return false;
}

void SvxColorWindow::SelectEntry(const NamedColor& rNamedColor)
{
    SetNoSelection();

    const Color &rColor = rNamedColor.first;

    if (rColor == COL_TRANSPARENT || rColor == COL_AUTO)
    {
        mpButtonAutoColor->set_property("has-default", "true");
        return;
    }

    if (mpButtonNoneColor->IsVisible() && rColor == COL_NONE_COLOR)
    {
        mpButtonNoneColor->set_property("has-default", "true");
        return;
    }

    // try current palette
    bool bFoundColor = SelectValueSetEntry(mpColorSet, rColor);
    // try recently used
    if (!bFoundColor)
        bFoundColor = SelectValueSetEntry(mpRecentColorSet, rColor);
    // if its not there, add it there now to the end of the recently used
    // so its available somewhere handy, but not without trashing the
    // whole recently used
    if (!bFoundColor)
    {
        const OUString& rColorName = rNamedColor.second;
        mrPaletteManager.AddRecentColor(rColor, rColorName, false);
        mrPaletteManager.ReloadRecentColorSet(*mpRecentColorSet);
        SelectValueSetEntry(mpRecentColorSet, rColor);
    }
}

void SvxColorWindow::SelectEntry(const Color& rColor)
{
    OUString sColorName = ("#" + rColor.AsRGBHexString().toAsciiUpperCase());
    SvxColorWindow::SelectEntry(std::make_pair(rColor, sColorName));
}

BorderColorStatus::BorderColorStatus() :
    maColor( COL_TRANSPARENT ),
@@ -2717,19 +2841,18 @@ VclPtr<SfxPopupWindow> SvxColorToolBoxControl::CreatePopupWindow()
                            &GetToolBox(),
                            m_aColorSelectFunction);

    pColorWin->StartPopupMode( &GetToolBox(),
        FloatWinPopupFlags::AllowTearOff|FloatWinPopupFlags::NoAppFocusClose );
    pColorWin->StartPopupMode(&GetToolBox(), FloatWinPopupFlags::GrabFocus);
    pColorWin->StartSelection();
    SetPopupWindow( pColorWin );
    SetPopupWindow(pColorWin);
    if ( m_bSplitButton )
        pColorWin->SetSelectedHdl( LINK( this, SvxColorToolBoxControl, SelectedHdl ) );
    return pColorWin;
}

IMPL_LINK(SvxColorToolBoxControl, SelectedHdl, const Color&, rColor, void)
IMPL_LINK(SvxColorToolBoxControl, SelectedHdl, const NamedColor&, rColor, void)
{
    m_xBtnUpdater->Update( rColor );
    m_aPaletteManager.SetLastColor( rColor );
    m_xBtnUpdater->Update(rColor.first);
    m_aPaletteManager.SetLastColor(rColor.first);
}

void SvxColorToolBoxControl::statusChanged( const css::frame::FeatureStateEvent& rEvent )
@@ -3067,4 +3190,198 @@ void SvxCurrencyToolBoxControl::GetCurrencySymbols( std::vector<OUString>& rList
    }
}

SvxListBoxColorWrapper::SvxListBoxColorWrapper(SvxColorListBox* pControl)
    : mxControl(pControl)
{
}

void SvxListBoxColorWrapper::operator()(const OUString& /*rCommand*/, const NamedColor& rColor)
{
    mxControl->Selected(rColor);
}

SvxColorListBox::SvxColorListBox(vcl::Window* pParent)
    : MenuButton(pParent)
    , m_aColorWrapper(this)
    , m_aAutoDisplayColor(Application::GetSettings().GetStyleSettings().GetDialogColor())
    , m_nSlotId(0)
    , m_bShowNoneButton(false)
{
    LockWidthRequest();
    m_aPaletteManager.SetColorSelectFunction(m_aColorWrapper);
    SetActivateHdl(LINK(this, SvxColorListBox, MenuActivateHdl));
    SetNoSelection();
}

void SvxColorListBox::SetSlotId(sal_uInt16 nSlotId, bool bShowNoneButton)
{
    m_nSlotId = nSlotId;
    m_bShowNoneButton = bShowNoneButton;
    m_xColorWindow.disposeAndClear();
    createColorWindow();
}

//to avoid the box resizing every time the color is changed to
//the optimal size of the individual color, get the longest
//standard color and stick with that as the size for all
void SvxColorListBox::LockWidthRequest()
{
    if (get_width_request() != -1)
        return;
    NamedColor aLongestColor;
    long nMaxStandardColorTextWidth = 0;
    XColorListRef const xColorTable = XColorList::CreateStdColorList();
    for (sal_Int32 i = 0; i != xColorTable->Count(); ++i)
    {
        XColorEntry& rEntry = *xColorTable->GetColor(i);
        long nColorTextWidth = GetTextWidth(rEntry.GetName());
        if (nColorTextWidth > nMaxStandardColorTextWidth)
        {
            nMaxStandardColorTextWidth = nColorTextWidth;
            aLongestColor.second = rEntry.GetName();
        }
    }
    ShowPreview(aLongestColor);
    set_width_request(get_preferred_size().Width());
}

void SvxColorListBox::ShowPreview(const NamedColor &rColor)
{
    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
    Size aImageSize(rStyleSettings.GetListBoxPreviewDefaultPixelSize());

    VclPtr<VirtualDevice> xDevice = VclPtr<VirtualDevice>::Create();
    xDevice->SetOutputSize(aImageSize);
    const Rectangle aRect(Point(0, 0), aImageSize);
    if (m_bShowNoneButton && rColor.first == COL_NONE_COLOR)
        xDevice->SetFillColor(COL_BLACK);
    else if (rColor.first == COL_AUTO)
        xDevice->SetFillColor(m_aAutoDisplayColor);
    else
        xDevice->SetFillColor(rColor.first);
    xDevice->SetLineColor(rStyleSettings.GetDisableColor());
    xDevice->DrawRect(aRect);

    Bitmap aBitmap(xDevice->GetBitmap(Point(0, 0), xDevice->GetOutputSize()));
    SetImageAlign(ImageAlign::Left);
    SetModeImage(Image(aBitmap));
    SetText(rColor.second);
}

IMPL_LINK(SvxColorListBox, MenuActivateHdl, MenuButton *, pBtn, void)
{
    (void)pBtn;
    if (!m_xColorWindow || m_xColorWindow->isDisposed())
        createColorWindow();
}

void SvxColorListBox::createColorWindow()
{
    const SfxViewFrame* pViewFrame = SfxViewFrame::Current();
    const SfxFrame* pFrame = pViewFrame ? &pViewFrame->GetFrame() : nullptr;
    css::uno::Reference<css::frame::XFrame> xFrame(pFrame ? pFrame->GetFrameInterface() : uno::Reference<css::frame::XFrame>());

    m_xColorWindow = VclPtr<SvxColorWindow>::Create(
                            OUString() /*m_aCommandURL*/,
                            m_aPaletteManager,
                            m_aBorderColorStatus,
                            m_nSlotId,
                            xFrame,
                            this,
                            m_aColorWrapper);
    if (m_bShowNoneButton)
        m_xColorWindow->ShowNoneButton();
    m_xColorWindow->SelectEntry(m_aSelectedColor);
    SetPopover(m_xColorWindow);
}

void SvxColorListBox::Selected(const NamedColor& rColor)
{
    ShowPreview(rColor);
    m_aPaletteManager.SetLastColor(rColor.first);
    m_aSelectedColor = rColor;
    if (m_aSelectedLink.IsSet())
        m_aSelectedLink.Call(*this);
}

VCL_BUILDER_FACTORY(SvxColorListBox)

SvxColorListBox::~SvxColorListBox()
{
    disposeOnce();
}

void SvxColorListBox::dispose()
{
    m_xColorWindow.disposeAndClear();
    MenuButton::dispose();
}

VclPtr<SvxColorWindow> SvxColorListBox::getColorWindow() const
{
    if (!m_xColorWindow || m_xColorWindow->isDisposed())
        const_cast<SvxColorListBox*>(this)->createColorWindow();
    return m_xColorWindow;
}

void SvxColorListBox::SelectEntry(const NamedColor& rColor)
{
    if (rColor.second.trim().isEmpty())
    {
        SelectEntry(rColor.first);
        return;
    }
    VclPtr<SvxColorWindow> xColorWindow = getColorWindow();
    xColorWindow->SelectEntry(rColor);
    m_aSelectedColor = xColorWindow->GetSelectEntryColor();
    ShowPreview(m_aSelectedColor);
}

void SvxColorListBox::SelectEntry(const Color& rColor)
{
    VclPtr<SvxColorWindow> xColorWindow = getColorWindow();
    xColorWindow->SelectEntry(rColor);
    m_aSelectedColor = xColorWindow->GetSelectEntryColor();
    ShowPreview(m_aSelectedColor);
}

Color SvxColorListBox::GetSelectEntryColor() const
{
    return m_aSelectedColor.first;
}

NamedColor SvxColorListBox::GetSelectEntry() const
{
    return m_aSelectedColor;
}

SvxColorListBoxWrapper::SvxColorListBoxWrapper(SvxColorListBox& rListBox)
    : sfx::SingleControlWrapper<SvxColorListBox, Color>(rListBox)
{
}

SvxColorListBoxWrapper::~SvxColorListBoxWrapper()
{
}

bool SvxColorListBoxWrapper::IsControlDontKnow() const
{
    return GetControl().IsNoSelection();
}

void SvxColorListBoxWrapper::SetControlDontKnow( bool bSet )
{
    if( bSet ) GetControl().SetNoSelection();
}

Color SvxColorListBoxWrapper::GetControlValue() const
{
    return GetControl().GetSelectEntryColor();
}

void SvxColorListBoxWrapper::SetControlValue( Color aColor )
{
    GetControl().SelectEntry( aColor );
}

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/tbcontrl.src b/svx/source/tbxctrls/tbcontrl.src
index 27aed7b..194d6a8 100644
--- a/svx/source/tbxctrls/tbcontrl.src
+++ b/svx/source/tbxctrls/tbcontrl.src
@@ -41,11 +41,16 @@ ImageList RID_SVXIL_FRAME
    IdCount = { 12 ; };
};

String RID_SVXSTR_TRANSPARENT
String RID_SVXSTR_NOFILL
{
    Text [ en-US ] = "No Fill" ;
};

String RID_SVXSTR_TRANSPARENT
{
    Text [ en-US ] = "Transparent";
};

String RID_SVXSTR_FILLPATTERN
{
    Text [ en-US ] = "Pattern" ;
@@ -135,6 +140,11 @@ String RID_SVXSTR_AUTOMATIC
    Text [ en-US ] = "Automatic";
};

String RID_SVXSTR_BY_AUTHOR
{
    Text [ en-US ] = "By author";
};

String RID_SVXSTR_PAGES
{
    Text [ en-US ] = "Pages";
diff --git a/svx/uiconfig/ui/colorwindow.ui b/svx/uiconfig/ui/colorwindow.ui
index 9482562..444797f 100644
--- a/svx/uiconfig/ui/colorwindow.ui
+++ b/svx/uiconfig/ui/colorwindow.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.18.3 -->
<!-- Generated with glade 3.20.0 -->
<interface>
  <requires lib="gtk+" version="3.10"/>
  <requires lib="LibreOffice" version="1.0"/>
@@ -13,9 +13,14 @@
    <property name="can_focus">False</property>
    <property name="margin_right">6</property>
    <property name="xalign">0</property>
    <property name="pixbuf">cmd/sc_colorsettings.png</property>
    <property name="pixbuf">cmd/sc_square_unfilled.png</property>
    <property name="icon_size">1</property>
  </object>
  <object class="GtkImage" id="none_icon">
    <property name="visible">True</property>
    <property name="can_focus">False</property>
    <property name="pixbuf">cmd/sc_square_unfilled.png</property>
  </object>
  <object class="GtkWindow" id="palette_popup_window">
    <property name="can_focus">False</property>
    <property name="hexpand">True</property>
@@ -25,7 +30,6 @@
    <property name="destroy_with_parent">True</property>
    <property name="type_hint">popup-menu</property>
    <property name="skip_pager_hint">True</property>
    <property name="decorated">False</property>
    <property name="deletable">False</property>
    <child>
      <object class="GtkBox" id="box1">
@@ -33,13 +37,41 @@
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkButton" id="auto_color_button">
          <object class="GtkBox">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="receives_default">True</property>
            <property name="image">auto_icon</property>
            <property name="relief">none</property>
            <property name="xalign">0</property>
            <property name="can_focus">False</property>
            <property name="spacing">6</property>
            <property name="homogeneous">True</property>
            <child>
              <object class="GtkButton" id="auto_color_button">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="image">auto_icon</property>
                <property name="relief">none</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">0</property>
              </packing>
            </child>
            <child>
              <object class="GtkButton" id="none_color_button">
                <property name="label" translatable="yes">None</property>
                <property name="can_focus">True</property>
                <property name="receives_default">True</property>
                <property name="image">none_icon</property>
                <property name="relief">none</property>
                <property name="xalign">0</property>
              </object>
              <packing>
                <property name="expand">False</property>
                <property name="fill">True</property>
                <property name="position">1</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">False</property>
diff --git a/svx/uiconfig/ui/docking3deffects.ui b/svx/uiconfig/ui/docking3deffects.ui
index e3856ff..fad6d1c 100644
--- a/svx/uiconfig/ui/docking3deffects.ui
+++ b/svx/uiconfig/ui/docking3deffects.ui
@@ -1089,7 +1089,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="ambientcolor">
                      <object class="svxlo-SvxColorListBox" id="ambientcolor">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="valign">center</property>
@@ -1250,7 +1250,7 @@
                        <property name="can_focus">False</property>
                        <property name="orientation">vertical</property>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor1">
                          <object class="svxlo-SvxColorListBox" id="lightcolor1">
                            <property name="visible">True</property>
                            <property name="can_focus">False</property>
                            <property name="valign">start</property>
@@ -1263,7 +1263,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor2">
                          <object class="svxlo-SvxColorListBox" id="lightcolor2">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1276,7 +1276,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor3">
                          <object class="svxlo-SvxColorListBox" id="lightcolor3">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1289,7 +1289,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor4">
                          <object class="svxlo-SvxColorListBox" id="lightcolor4">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1302,7 +1302,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor5">
                          <object class="svxlo-SvxColorListBox" id="lightcolor5">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1315,7 +1315,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor6">
                          <object class="svxlo-SvxColorListBox" id="lightcolor6">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1328,7 +1328,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor7">
                          <object class="svxlo-SvxColorListBox" id="lightcolor7">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1341,7 +1341,7 @@
                          </packing>
                        </child>
                        <child>
                          <object class="svxlo-ColorLB" id="lightcolor8">
                          <object class="svxlo-SvxColorListBox" id="lightcolor8">
                            <property name="can_focus">False</property>
                            <property name="no_show_all">True</property>
                            <property name="valign">start</property>
@@ -1721,7 +1721,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="objcolor">
                      <object class="svxlo-SvxColorListBox" id="objcolor">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="valign">center</property>
@@ -1733,7 +1733,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="illumcolor">
                      <object class="svxlo-SvxColorListBox" id="illumcolor">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="valign">center</property>
@@ -1856,7 +1856,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="speccolor">
                      <object class="svxlo-SvxColorListBox" id="speccolor">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="valign">center</property>
diff --git a/svx/uiconfig/ui/dockingcolorreplace.ui b/svx/uiconfig/ui/dockingcolorreplace.ui
index 778c740..9b7e535 100644
--- a/svx/uiconfig/ui/dockingcolorreplace.ui
+++ b/svx/uiconfig/ui/dockingcolorreplace.ui
@@ -241,7 +241,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="color1">
                      <object class="svxlo-SvxColorListBox" id="color1">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
@@ -257,7 +257,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="color2">
                      <object class="svxlo-SvxColorListBox" id="color2">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
@@ -273,7 +273,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="color3">
                      <object class="svxlo-SvxColorListBox" id="color3">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
@@ -289,7 +289,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="color4">
                      <object class="svxlo-SvxColorListBox" id="color4">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="hexpand">True</property>
@@ -305,7 +305,7 @@
                      </packing>
                    </child>
                    <child>
                      <object class="svxlo-ColorLB" id="color5">
                      <object class="svxlo-SvxColorListBox" id="color5">
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                      </object>
diff --git a/svx/uiconfig/ui/dockingfontwork.ui b/svx/uiconfig/ui/dockingfontwork.ui
index 0c729be1..01e74c3 100644
--- a/svx/uiconfig/ui/dockingfontwork.ui
+++ b/svx/uiconfig/ui/dockingfontwork.ui
@@ -437,7 +437,7 @@
          </packing>
        </child>
        <child>
          <object class="svxlo-ColorLB" id="color">
          <object class="svxlo-SvxColorListBox" id="color">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
            <property name="tooltip_text" translatable="yes">Shadow Color</property>
diff --git a/svx/uiconfig/ui/sidebararea.ui b/svx/uiconfig/ui/sidebararea.ui
index e85fe45..85a3122 100644
--- a/svx/uiconfig/ui/sidebararea.ui
+++ b/svx/uiconfig/ui/sidebararea.ui
@@ -100,7 +100,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="fillgrad1">
                  <object class="svxlo-SvxColorListBox" id="fillgrad1">
                    <property name="can_focus">False</property>
                    <property name="has_tooltip">True</property>
                    <property name="tooltip_text" translatable="yes">Fill gradient from.</property>
@@ -144,7 +144,7 @@
              </packing>
            </child>
            <child>
              <object class="svxlo-ColorLB" id="fillgrad2">
              <object class="svxlo-SvxColorListBox" id="fillgrad2">
                <property name="can_focus">False</property>
                <property name="has_tooltip">True</property>
                <property name="tooltip_text" translatable="yes">Fill gradient to.</property>
diff --git a/svx/uiconfig/ui/sidebarshadow.ui b/svx/uiconfig/ui/sidebarshadow.ui
index 0b2e8cf..356b6ff 100644
--- a/svx/uiconfig/ui/sidebarshadow.ui
+++ b/svx/uiconfig/ui/sidebarshadow.ui
@@ -184,7 +184,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svxlo-ColorLB" id="LB_SHADOW_COLOR">
                  <object class="svxlo-SvxColorListBox" id="LB_SHADOW_COLOR">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="halign">end</property>
diff --git a/sw/inc/authratr.hxx b/sw/inc/authratr.hxx
index 188da163..8587310 100644
--- a/sw/inc/authratr.hxx
+++ b/sw/inc/authratr.hxx
@@ -24,8 +24,6 @@
#include <tools/color.hxx>
#include "swdllapi.h"

#define COL_NONE_COLOR    TRGB_COLORDATA( 0x80, 0xFF, 0xFF, 0xFF )

class SW_DLLPUBLIC AuthorCharAttr
{
public:
diff --git a/sw/source/core/access/accpara.cxx b/sw/source/core/access/accpara.cxx
index 0c7cb7d..9354955 100644
--- a/sw/source/core/access/accpara.cxx
+++ b/sw/source/core/access/accpara.cxx
@@ -88,6 +88,7 @@
#include <com/sun/star/text/TextMarkupType.hpp>
#include <comphelper/servicehelper.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <svx/colorwindow.hxx>

#include <reffld.hxx>
#include <expfld.hxx>
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
index c599a6e..e4c17d0 100644
--- a/sw/source/ui/config/optpage.cxx
+++ b/sw/source/ui/config/optpage.cxx
@@ -1730,20 +1730,22 @@ SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( vcl::Window* pParent,
                                                  const SfxItemSet& rSet )
    : SfxTabPage(pParent, "OptRedLinePage",
        "modules/swriter/ui/optredlinepage.ui" , &rSet)
    , sNone(SW_RESSTR(SW_STR_NONE))
{
    Size aPreviewSize(getPreviewOptionsSize(this));

    get(pInsertLB,"insert");
    get(pInsertColorLB,"insertcolor");
    pInsertColorLB->SetSlotId(SID_AUTHOR_COLOR, true);
    get(pInsertedPreviewWN,"insertedpreview");

    get(pDeletedLB,"deleted");
    get(pDeletedColorLB,"deletedcolor");
    pDeletedColorLB->SetSlotId(SID_AUTHOR_COLOR, true);
    get(pDeletedPreviewWN,"deletedpreview");

    get(pChangedLB,"changed");
    get(pChangedColorLB,"changedcolor");
    pChangedColorLB->SetSlotId(SID_AUTHOR_COLOR, true);
    get(pChangedPreviewWN,"changedpreview");

    get(pMarkPosLB,"markpos");
@@ -1760,8 +1762,6 @@ SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( vcl::Window* pParent,
    pChangedPreviewWN->set_width_request(aPreviewSize.Width());
    pMarkPreviewWN->set_width_request(aPreviewSize.Width());

    sAuthor = get<vcl::Window>("byauthor")->GetText();

    for (sal_Int32 i = 0; i < pInsertLB->GetEntryCount(); ++i)
    {
        const OUString sEntry(pInsertLB->GetEntry(i));
@@ -1781,14 +1781,13 @@ SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( vcl::Window* pParent,
    pDeletedLB->SetSelectHdl( aLk );
    pChangedLB->SetSelectHdl( aLk );

    aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
    pInsertColorLB->SetSelectHdl( aLk );
    pDeletedColorLB->SetSelectHdl( aLk );
    pChangedColorLB->SetSelectHdl( aLk );
    Link<SvxColorListBox&,void> aLk2 = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
    pInsertColorLB->SetSelectHdl( aLk2 );
    pDeletedColorLB->SetSelectHdl( aLk2 );
    pChangedColorLB->SetSelectHdl( aLk2 );

    aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
    pMarkPosLB->SetSelectHdl( aLk );
    pMarkColorLB->SetSelectHdl( aLk );
    pMarkPosLB->SetSelectHdl(LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl));
    pMarkColorLB->SetSelectHdl(LINK(this, SwRedlineOptionsTabPage, ChangedMaskColorPrevHdl));
}

SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
@@ -1840,23 +1839,7 @@ bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet* )
        pAttr = static_cast<CharAttr *>(pInsertLB->GetEntryData(nPos));
        aInsertedAttr.nItemId = pAttr->nItemId;
        aInsertedAttr.nAttr = pAttr->nAttr;

        nPos = pInsertColorLB->GetSelectEntryPos();

        switch (nPos)
        {
            case 0:
                aInsertedAttr.nColor = COL_NONE_COLOR;
                break;
            case 1:
            case LISTBOX_ENTRY_NOTFOUND:
                aInsertedAttr.nColor = COL_TRANSPARENT;
                break;
            default:
                aInsertedAttr.nColor = pInsertColorLB->GetEntryColor(nPos).GetColor();
                break;
        }

        aInsertedAttr.nColor = pInsertColorLB->GetSelectEntryColor().GetColor();
        pOpt->SetInsertAuthorAttr(aInsertedAttr);
    }

@@ -1866,23 +1849,7 @@ bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet* )
        pAttr = static_cast<CharAttr *>(pDeletedLB->GetEntryData(nPos));
        aDeletedAttr.nItemId = pAttr->nItemId;
        aDeletedAttr.nAttr = pAttr->nAttr;

        nPos = pDeletedColorLB->GetSelectEntryPos();

        switch (nPos)
        {
            case 0:
                aDeletedAttr.nColor = COL_NONE_COLOR;
                break;
            case 1:
            case LISTBOX_ENTRY_NOTFOUND:
                aDeletedAttr.nColor = COL_TRANSPARENT;
                break;
            default:
                aDeletedAttr.nColor = pDeletedColorLB->GetEntryColor(nPos).GetColor();
                break;
        }

        aDeletedAttr.nColor = pDeletedColorLB->GetSelectEntryColor().GetColor();
        pOpt->SetDeletedAuthorAttr(aDeletedAttr);
    }

@@ -1892,23 +1859,7 @@ bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet* )
        pAttr = static_cast<CharAttr *>(pChangedLB->GetEntryData(nPos));
        aChangedAttr.nItemId = pAttr->nItemId;
        aChangedAttr.nAttr = pAttr->nAttr;

        nPos = pChangedColorLB->GetSelectEntryPos();

        switch (nPos)
        {
            case 0:
                aChangedAttr.nColor = COL_NONE_COLOR;
                break;
            case 1:
            case LISTBOX_ENTRY_NOTFOUND:
                aChangedAttr.nColor = COL_TRANSPARENT;
                break;
            default:
                aChangedAttr.nColor = pChangedColorLB->GetEntryColor(nPos).GetColor();
                break;
        }

        aChangedAttr.nColor = pChangedColorLB->GetSelectEntryColor().GetColor();
        pOpt->SetFormatAuthorAttr(aChangedAttr);
    }

@@ -1957,77 +1908,14 @@ void SwRedlineOptionsTabPage::Reset( const SfxItemSet*  )
    InitFontStyle(*pDeletedPreviewWN);
    InitFontStyle(*pChangedPreviewWN);

    // initialise colour list box
    pInsertColorLB->SetUpdateMode(false);
    pDeletedColorLB->SetUpdateMode(false);
    pChangedColorLB->SetUpdateMode(false);
    pMarkColorLB->SetUpdateMode(false);
    pInsertColorLB->InsertEntry(sNone);
    pDeletedColorLB->InsertEntry(sNone);
    pChangedColorLB->InsertEntry(sNone);

    pInsertColorLB->InsertEntry(sAuthor);
    pDeletedColorLB->InsertEntry(sAuthor);
    pChangedColorLB->InsertEntry(sAuthor);

    XColorListRef pColorLst = XColorList::GetStdColorList();
    for( long i = 0; i < pColorLst->Count(); ++i )
    {
        const XColorEntry* pEntry = pColorLst->GetColor(i);
        Color aColor = pEntry->GetColor();
        const OUString sName = pEntry->GetName();

        pInsertColorLB->InsertEntry( aColor, sName );
        pDeletedColorLB->InsertEntry( aColor, sName );
        pChangedColorLB->InsertEntry( aColor, sName );
        pMarkColorLB->InsertEntry( aColor, sName );
    }
    pInsertColorLB->SetUpdateMode( true );
    pDeletedColorLB->SetUpdateMode( true );
    pChangedColorLB->SetUpdateMode( true );
    pMarkColorLB->SetUpdateMode( true );

    ColorData nColor = rInsertAttr.nColor;

    switch (nColor)
    {
        case COL_TRANSPARENT:
            pInsertColorLB->SelectEntryPos(1);
            break;
        case COL_NONE_COLOR:
            pInsertColorLB->SelectEntryPos(0);
            break;
        default:
            pInsertColorLB->SelectEntry(Color(nColor));
    }
    pInsertColorLB->SelectEntry(Color(nColor));

    nColor = rDeletedAttr.nColor;

    switch (nColor)
    {
        case COL_TRANSPARENT:
            pDeletedColorLB->SelectEntryPos(1);
            break;
        case COL_NONE_COLOR:
            pDeletedColorLB->SelectEntryPos(0);
            break;
        default:
            pDeletedColorLB->SelectEntry(Color(nColor));
    }
    pDeletedColorLB->SelectEntry(Color(nColor));

    nColor = rChangedAttr.nColor;

    switch (nColor)
    {
        case COL_TRANSPARENT:
            pChangedColorLB->SelectEntryPos(1);
            break;
        case COL_NONE_COLOR:
            pChangedColorLB->SelectEntryPos(0);
            break;
        default:
            pChangedColorLB->SelectEntry(Color(nColor));
    }
    pChangedColorLB->SelectEntry(Color(nColor));

    pMarkColorLB->SelectEntry(pOpt->GetMarkAlignColor());

@@ -2058,13 +1946,13 @@ void SwRedlineOptionsTabPage::Reset( const SfxItemSet*  )
    AttribHdl(*pChangedLB);
    ColorHdl(*pChangedColorLB);

    ChangedMaskPrevHdl(*pMarkPosLB);
    ChangedMaskPrev();
}

IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox&, rLB, void )
{
    SvxFontPrevWindow *pPrev = nullptr;
    ColorListBox *pColorLB;
    SvxColorListBox *pColorLB;

    if (&rLB == pInsertLB)
    {
@@ -2096,26 +1984,25 @@ IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox&, rLB, void )
    rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
    rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);

    sal_Int32      nPos = pColorLB->GetSelectEntryPos();
    Color aColor = pColorLB->GetSelectEntryColor();

    switch( nPos )
    if (aColor == COL_NONE_COLOR)
    {
        case 0:
            rFont.SetColor( Color( COL_BLACK ) );
            rCJKFont.SetColor( Color( COL_BLACK ) );
            break;
        case 1:
        case LISTBOX_ENTRY_NOTFOUND:
            rFont.SetColor( Color( COL_RED ) );
            rCJKFont.SetColor( Color( COL_RED ) );
            break;
        default:
            rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
            rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
            break;
        rFont.SetColor( Color( COL_BLACK ) );
        rCJKFont.SetColor( Color( COL_BLACK ) );
    }
    else if (aColor == COL_TRANSPARENT)
    {
        rFont.SetColor( Color( COL_RED ) );
        rCJKFont.SetColor( Color( COL_RED ) );
    }
    else
    {
        rFont.SetColor(aColor);
        rCJKFont.SetColor(aColor);
    }

    nPos = rLB.GetSelectEntryPos();
    sal_Int32 nPos = rLB.GetSelectEntryPos();
    if( nPos == LISTBOX_ENTRY_NOTFOUND )
        nPos = 0;

@@ -2151,12 +2038,11 @@ IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox&, rLB, void )

        case SID_ATTR_BRUSH:
        {
            nPos = pColorLB->GetSelectEntryPos();
            if( nPos )
                pPrev->SetColor( pColorLB->GetSelectEntryColor() );
            Color aBgColor = pColorLB->GetSelectEntryColor();
            if (aBgColor != COL_NONE_COLOR)
                pPrev->SetColor(aBgColor);
            else
                pPrev->SetColor( Color( COL_LIGHTGRAY ) );

                pPrev->SetColor(Color(COL_LIGHTGRAY));
            rFont.SetColor( Color( COL_BLACK ) );
            rCJKFont.SetColor( Color( COL_BLACK ) );
        }
@@ -2166,9 +2052,9 @@ IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox&, rLB, void )
    pPrev->Invalidate();
}

IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ListBox&, rListBox, void )
IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, SvxColorListBox&, rListBox, void )
{
    ColorListBox* pColorLB = static_cast<ColorListBox*>(&rListBox);
    SvxColorListBox* pColorLB = &rListBox;
    SvxFontPrevWindow *pPrev = nullptr;
    ListBox* pLB;

@@ -2200,38 +2086,38 @@ IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ListBox&, rListBox, void )
    {
        rFont.SetColor( Color( COL_BLACK ) );
        rCJKFont.SetColor( Color( COL_BLACK ) );
        nPos = pColorLB->GetSelectEntryPos();
        if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
            pPrev->SetColor( pColorLB->GetSelectEntryColor() );

        Color aBgColor = pColorLB->GetSelectEntryColor();
        if (aBgColor != COL_NONE_COLOR)
            pPrev->SetColor(aBgColor);
        else
            pPrev->SetColor( Color( COL_LIGHTGRAY ) );
            pPrev->SetColor(Color(COL_LIGHTGRAY));
    }
    else
    {
        nPos = pColorLB->GetSelectEntryPos();
        Color aColor = pColorLB->GetSelectEntryColor();

        switch( nPos )
        if (aColor == COL_NONE_COLOR)
        {
            case 0:
                rFont.SetColor( Color( COL_BLACK ) );
                rCJKFont.SetColor( Color( COL_BLACK ) );
                break;
            case 1:
            case LISTBOX_ENTRY_NOTFOUND:
                rFont.SetColor( Color( COL_RED ) );
                rCJKFont.SetColor( Color( COL_RED ) );
                break;
            default:
                rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
                rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
                break;
            rFont.SetColor( Color( COL_BLACK ) );
            rCJKFont.SetColor( Color( COL_BLACK ) );
        }
        else if (aColor == COL_TRANSPARENT)
        {
            rFont.SetColor( Color( COL_RED ) );
            rCJKFont.SetColor( Color( COL_RED ) );
        }
        else
        {
            rFont.SetColor(aColor);
            rCJKFont.SetColor(aColor);
        }
    }

    pPrev->Invalidate();
}

IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox&, void)
void SwRedlineOptionsTabPage::ChangedMaskPrev()
{
    pMarkPreviewWN->SetMarkPos(pMarkPosLB->GetSelectEntryPos());
    pMarkPreviewWN->SetColor(pMarkColorLB->GetSelectEntryColor().GetColor());
@@ -2239,6 +2125,16 @@ IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox&, void)
    pMarkPreviewWN->Invalidate();
}

IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox&, void)
{
    ChangedMaskPrev();
}

IMPL_LINK_NOARG(SwRedlineOptionsTabPage, ChangedMaskColorPrevHdl, SvxColorListBox&, void)
{
    ChangedMaskPrev();
}

void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
{
    const AllSettings&  rAllSettings = Application::GetSettings();
diff --git a/sw/source/ui/frmdlg/column.cxx b/sw/source/ui/frmdlg/column.cxx
index f3d5931..6d038be 100644
--- a/sw/source/ui/frmdlg/column.cxx
+++ b/sw/source/ui/frmdlg/column.cxx
@@ -25,6 +25,7 @@
#include <svx/dialogs.hrc>
#include <svx/dialmgr.hxx>
#include <sfx2/htmlmode.hxx>
#include <svx/colorbox.hxx>
#include <svx/xtable.hxx>
#include <svx/drawitem.hxx>
#include <editeng/borderline.hxx>
@@ -497,12 +498,11 @@ SwColumnPage::SwColumnPage(vcl::Window *pParent, const SfxItemSet &rSet)
    m_pAutoWidthBox->SetClickHdl(LINK(this, SwColumnPage, AutoWidthHdl));

    aLk = LINK( this, SwColumnPage, UpdateColMgr );
    Link<ListBox&,void> aLk2 = LINK( this, SwColumnPage, UpdateColMgrListBox );
    m_pLineTypeDLB->SetSelectHdl( aLk2 );
    m_pLineTypeDLB->SetSelectHdl(LINK(this, SwColumnPage, UpdateColMgrListBox));
    m_pLineWidthEdit->SetModifyHdl( aLk );
    m_pLineColorDLB->SetSelectHdl( aLk2 );
    m_pLineColorDLB->SetSelectHdl(LINK( this, SwColumnPage, UpdateColMgrColorBox));
    m_pLineHeightEdit->SetModifyHdl( aLk );
    m_pLinePosDLB->SetSelectHdl( aLk2 );
    m_pLinePosDLB->SetSelectHdl(LINK(this, SwColumnPage, UpdateColMgrListBox));

    // Separator line
    m_pLineTypeDLB->SetUnit( FUNIT_POINT );
@@ -525,29 +525,7 @@ SwColumnPage::SwColumnPage(vcl::Window *pParent, const SfxItemSet &rSet)
            m_pLineWidthEdit->GetDecimalDigits( ),
            m_pLineWidthEdit->GetUnit(), MapUnit::MapTwip ));
    m_pLineTypeDLB->SetWidth( nLineWidth );

    // Fill the color listbox
    SfxObjectShell* pDocSh = SfxObjectShell::Current();
    XColorListRef pColorList;
    if ( pDocSh )
    {
        const SfxPoolItem*  pItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pItem != nullptr )
            pColorList = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
    }

    if ( pColorList.is() )
    {
        m_pLineColorDLB->SetUpdateMode( false );

        for (long i = 0; i < pColorList->Count(); ++i )
        {
            const XColorEntry* pEntry = pColorList->GetColor(i);
            m_pLineColorDLB->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        }
        m_pLineColorDLB->SetUpdateMode( true );
    }
    m_pLineColorDLB->SelectEntryPos( 0 );
    m_pLineColorDLB->SelectEntry(COL_BLACK);
}

SwColumnPage::~SwColumnPage()
@@ -701,10 +679,18 @@ IMPL_LINK_NOARG( SwColumnPage, UpdateColMgrListBox, ListBox&, void )
{
    UpdateColMgr(*m_pLineWidthEdit);
}

IMPL_LINK_NOARG( SwColumnPage, UpdateColMgrColorBox, SvxColorListBox&, void )
{
    UpdateColMgr(*m_pLineWidthEdit);
}

IMPL_LINK_NOARG( SwColumnPage, UpdateColMgr, Edit&, void )
{
    if (!m_pColMgr)
        return;
    long nGutterWidth = m_pColMgr->GetGutterWidth();
    if(m_nCols > 1)
    if (m_nCols > 1)
    {
            // Determine whether the most narrow column is too narrow
            // for the adjusted column gap
diff --git a/sw/source/ui/misc/pgfnote.cxx b/sw/source/ui/misc/pgfnote.cxx
index 43a5188..691105f 100644
--- a/sw/source/ui/misc/pgfnote.cxx
+++ b/sw/source/ui/misc/pgfnote.cxx
@@ -93,9 +93,9 @@ IMPL_LINK_NOARG(SwFootNotePage, LineWidthChanged_Impl, Edit&, void)
    m_pLineTypeBox->SetWidth( nVal );
}

IMPL_LINK_NOARG(SwFootNotePage, LineColorSelected_Impl, ListBox&, void)
IMPL_LINK(SwFootNotePage, LineColorSelected_Impl, SvxColorListBox&, rColorBox, void)
{
    m_pLineTypeBox->SetColor( m_pLineColorBox->GetSelectEntryColor() );
    m_pLineTypeBox->SetColor(rColorBox.GetSelectEntryColor());
}

SwFootNotePage::SwFootNotePage(vcl::Window *pParent, const SfxItemSet &rSet)
@@ -211,41 +211,9 @@ void SwFootNotePage::Reset(const SfxItemSet *rSet)
    m_pLineTypeBox->SelectEntry( pFootnoteInfo->GetLineStyle() );

    // Separator Color
    SfxObjectShell*     pDocSh      = SfxObjectShell::Current();
    XColorListRef pColorList;

    OSL_ENSURE( pDocSh, "DocShell not found!" );

    if ( pDocSh )
    {
        const SfxPoolItem* pColorItem = pDocSh->GetItem( SID_COLOR_TABLE );
        if ( pColorItem != nullptr )
            pColorList = static_cast<const SvxColorListItem*>(pColorItem)->GetColorList();
    }

    OSL_ENSURE( pColorList.is(), "ColorTable not found!" );

    if ( pColorList.is() )
    {
        m_pLineColorBox->SetUpdateMode( false );

        for ( long i = 0; i < pColorList->Count(); ++i )
        {
            const XColorEntry* pEntry = pColorList->GetColor(i);
            m_pLineColorBox->InsertEntry( pEntry->GetColor(), pEntry->GetName() );
        }
        m_pLineColorBox->SetUpdateMode( true );
    }

    // select color in the list or add it as a user color
    sal_Int32 nSelPos = m_pLineColorBox->GetEntryPos( pFootnoteInfo->GetLineColor() );
    if( nSelPos == LISTBOX_ENTRY_NOTFOUND )
        nSelPos = m_pLineColorBox->InsertEntry( pFootnoteInfo->GetLineColor(),
                SVX_RESSTR(RID_SVXSTR_COLOR_USER) );

    m_pLineColorBox->SetSelectHdl( LINK( this, SwFootNotePage, LineColorSelected_Impl ) );
    m_pLineColorBox->SelectEntryPos( nSelPos );
    m_pLineTypeBox->SetColor( pFootnoteInfo->GetLineColor() );
    m_pLineColorBox->SelectEntry(pFootnoteInfo->GetLineColor());
    m_pLineColorBox->SetSelectHdl(LINK(this, SwFootNotePage, LineColorSelected_Impl));
    m_pLineTypeBox->SetColor(pFootnoteInfo->GetLineColor());

    // position
    m_pLinePosBox->SelectEntryPos( static_cast< sal_Int32 >(pFootnoteInfo->GetAdj()) );
diff --git a/sw/source/ui/misc/pggrid.cxx b/sw/source/ui/misc/pggrid.cxx
index 583e2c2..e622569 100644
--- a/sw/source/ui/misc/pggrid.cxx
+++ b/sw/source/ui/misc/pggrid.cxx
@@ -23,6 +23,7 @@
#include <hintids.hxx>
#include <swtypes.hxx>
#include <globals.hrc>
#include <svx/colorbox.hxx>
#include <svx/xtable.hxx>
#include <uitool.hxx>
#include <editeng/sizeitem.hxx>
@@ -102,23 +103,12 @@ SwTextGridPage::SwTextGridPage(vcl::Window *pParent, const SfxItemSet &rSet) :
    m_pLinesGridRB->SetClickHdl(aGridTypeHdl);
    m_pCharsGridRB->SetClickHdl(aGridTypeHdl);

    m_pColorLB->SetSelectHdl(LINK(this, SwTextGridPage, GridModifyHdl));
    m_pColorLB->SetSelectHdl(LINK(this, SwTextGridPage, ColorModifyHdl));
    m_pPrintCB->SetClickHdl(LINK(this, SwTextGridPage, GridModifyClickHdl));
    m_pRubyBelowCB->SetClickHdl(LINK(this, SwTextGridPage, GridModifyClickHdl));

    m_pDisplayCB->SetClickHdl(LINK(this, SwTextGridPage, DisplayGridHdl));

    XColorListRef pColorLst = XColorList::GetStdColorList();
    m_pColorLB->InsertAutomaticEntryColor( Color( COL_AUTO ) );
    const long nCount = pColorLst->Count();
    for( long i = 0; i < nCount; ++i )
    {
        const XColorEntry* pEntry = pColorLst->GetColor(i);
        Color aColor = pEntry->GetColor();
        OUString sName = pEntry->GetName();
        m_pColorLB->InsertEntry( aColor, sName );
    }
    m_pColorLB->SetUpdateMode( true );
    //Get the default paper mode
    SwView *pView   = ::GetActiveView();
    if( pView )
@@ -434,7 +424,7 @@ IMPL_LINK(SwTextGridPage, CharorLineChangedHdl, SpinField&, rField, void)
            SetLinesOrCharsRanges( *m_pCharsRangeFT , m_pCharsPerLineNF->GetMax() );
        }
    }
    GridModifyHdl(*m_pColorLB);
    GridModifyHdl();
}

IMPL_LINK(SwTextGridPage, TextSizeLoseFocusHdl, Control&, rControl, void)
@@ -489,7 +479,7 @@ IMPL_LINK(SwTextGridPage, TextSizeChangedHdl, SpinField&, rField, void)
        }
        //rubySize is disabled
    }
    GridModifyHdl(*m_pColorLB);
    GridModifyHdl();
}

IMPL_LINK(SwTextGridPage, GridTypeHdl, Button*, pButton, void)
@@ -515,7 +505,7 @@ IMPL_LINK(SwTextGridPage, GridTypeHdl, Button*, pButton, void)
        m_pCharWidthMF->Enable(false);
    }

    GridModifyHdl(*m_pColorLB);
    GridModifyHdl();
}

IMPL_LINK_NOARG(SwTextGridPage, DisplayGridHdl, Button*, void)
@@ -527,9 +517,15 @@ IMPL_LINK_NOARG(SwTextGridPage, DisplayGridHdl, Button*, void)

IMPL_LINK_NOARG(SwTextGridPage, GridModifyClickHdl, Button*, void)
{
    GridModifyHdl(*m_pColorLB);
    GridModifyHdl();
}
IMPL_LINK_NOARG(SwTextGridPage, GridModifyHdl, ListBox&, void)

IMPL_LINK_NOARG(SwTextGridPage, ColorModifyHdl, SvxColorListBox&, void)
{
    GridModifyHdl();
}

void SwTextGridPage::GridModifyHdl()
{
    const SfxItemSet& rOldSet = GetItemSet();
    SfxItemSet aSet(rOldSet);
diff --git a/sw/source/uibase/app/swmodul1.cxx b/sw/source/uibase/app/swmodul1.cxx
index 6d0030b..d3e4374 100644
--- a/sw/source/uibase/app/swmodul1.cxx
+++ b/sw/source/uibase/app/swmodul1.cxx
@@ -28,6 +28,7 @@
#include <cppuhelper/weak.hxx>
#include <com/sun/star/frame/FrameSearchFlag.hpp>
#include <com/sun/star/view/XSelectionSupplier.hpp>
#include <svx/colorwindow.hxx>
#include <svx/dataaccessdescriptor.hxx>
#include <editeng/wghtitem.hxx>
#include <editeng/postitem.hxx>
diff --git a/sw/source/uibase/inc/column.hxx b/sw/source/uibase/inc/column.hxx
index bbaaef6..d52d9a7 100644
--- a/sw/source/uibase/inc/column.hxx
+++ b/sw/source/uibase/inc/column.hxx
@@ -31,6 +31,7 @@
#include <svtools/valueset.hxx>
#include <sfx2/basedlgs.hxx>
#include <sfx2/tabdlg.hxx>
#include <svx/colorbox.hxx>
#include <fmtclbl.hxx>
#include <colex.hxx>
#include <prcntfld.hxx>
@@ -105,7 +106,7 @@ class SwColumnPage : public SfxTabPage
    VclPtr<FixedText>      m_pLineWidthLbl;
    VclPtr<MetricField>    m_pLineWidthEdit;
    VclPtr<FixedText>      m_pLineColorLbl;
    VclPtr<ColorListBox>   m_pLineColorDLB;
    VclPtr<SvxColorListBox> m_pLineColorDLB;
    VclPtr<FixedText>      m_pLineHeightLbl;
    VclPtr<MetricField>    m_pLineHeightEdit;
    VclPtr<FixedText>      m_pLinePosLbl;
@@ -146,6 +147,7 @@ class SwColumnPage : public SfxTabPage
    DECL_LINK( Down, Button *, void );
    DECL_LINK( UpdateColMgr, Edit&, void );
    DECL_LINK( UpdateColMgrListBox, ListBox&, void );
    DECL_LINK( UpdateColMgrColorBox, SvxColorListBox&, void );
    void Timeout();

    void            Update(MetricField *pInteractiveField);
diff --git a/sw/source/uibase/inc/optpage.hxx b/sw/source/uibase/inc/optpage.hxx
index 5f768e2..cfc6bf1 100644
--- a/sw/source/uibase/inc/optpage.hxx
+++ b/sw/source/uibase/inc/optpage.hxx
@@ -30,6 +30,7 @@

#include <vcl/fixed.hxx>
#include <svtools/ctrlbox.hxx>
#include <svx/colorbox.hxx>
#include <svx/fntctrl.hxx>
#include <fontcfg.hxx>
class SfxPrinter;
@@ -312,27 +313,26 @@ public:
class SwRedlineOptionsTabPage : public SfxTabPage
{
    VclPtr<ListBox>             pInsertLB;
    VclPtr<ColorListBox>        pInsertColorLB;
    VclPtr<SvxColorListBox>     pInsertColorLB;
    VclPtr<SvxFontPrevWindow>   pInsertedPreviewWN;

    VclPtr<ListBox>             pDeletedLB;
    VclPtr<ColorListBox>        pDeletedColorLB;
    VclPtr<SvxColorListBox>     pDeletedColorLB;
    VclPtr<SvxFontPrevWindow>   pDeletedPreviewWN;

    VclPtr<ListBox>             pChangedLB;
    VclPtr<ColorListBox>        pChangedColorLB;
    VclPtr<SvxColorListBox>     pChangedColorLB;
    VclPtr<SvxFontPrevWindow>   pChangedPreviewWN;

    VclPtr<ListBox>             pMarkPosLB;
    VclPtr<ColorListBox>        pMarkColorLB;
    VclPtr<SvxColorListBox>     pMarkColorLB;
    VclPtr<SwMarkPreview>       pMarkPreviewWN;

    OUString             sAuthor;
    OUString             sNone;

    DECL_LINK(AttribHdl, ListBox&, void);
    void ChangedMaskPrev();
    DECL_LINK(ChangedMaskPrevHdl, ListBox&, void);
    DECL_LINK(ColorHdl, ListBox&, void);
    DECL_LINK(ChangedMaskColorPrevHdl, SvxColorListBox&, void);
    DECL_LINK(ColorHdl, SvxColorListBox&, void);

    static void InitFontStyle(SvxFontPrevWindow& rExampleWin);

diff --git a/sw/source/uibase/inc/pgfnote.hxx b/sw/source/uibase/inc/pgfnote.hxx
index 4ca6e8d..81a69ab 100644
--- a/sw/source/uibase/inc/pgfnote.hxx
+++ b/sw/source/uibase/inc/pgfnote.hxx
@@ -27,6 +27,7 @@

#include <vcl/group.hxx>
#include <svtools/ctrlbox.hxx>
#include <svx/colorbox.hxx>

// footnote settings TabPage
class SwFootNotePage: public SfxTabPage
@@ -53,7 +54,7 @@ private:
    VclPtr<ListBox>        m_pLinePosBox;
    VclPtr<LineListBox>    m_pLineTypeBox;
    VclPtr<MetricField>    m_pLineWidthEdit;
    VclPtr<ColorListBox>   m_pLineColorBox;
    VclPtr<SvxColorListBox> m_pLineColorBox;
    VclPtr<MetricField>    m_pLineLengthEdit;
    VclPtr<MetricField>    m_pLineDistEdit;

@@ -61,7 +62,7 @@ private:
    DECL_LINK( HeightMetric, Button*, void );
    DECL_LINK( HeightModify, Control&, void );
    DECL_LINK( LineWidthChanged_Impl, Edit&, void );
    DECL_LINK( LineColorSelected_Impl, ListBox&, void );
    DECL_LINK( LineColorSelected_Impl, SvxColorListBox&, void );

    long            lMaxHeight;

diff --git a/sw/source/uibase/inc/pggrid.hxx b/sw/source/uibase/inc/pggrid.hxx
index be73dae..ab560a6b 100644
--- a/sw/source/uibase/inc/pggrid.hxx
+++ b/sw/source/uibase/inc/pggrid.hxx
@@ -24,6 +24,7 @@
#include <vcl/field.hxx>
#include <vcl/fixed.hxx>
#include <svtools/ctrlbox.hxx>
#include <svx/colorbox.hxx>

// TabPage Format/(Styles/)Page/Text grid
class SwTextGridPage: public SfxTabPage
@@ -57,7 +58,7 @@ class SwTextGridPage: public SfxTabPage

    VclPtr<CheckBox>        m_pDisplayCB;
    VclPtr<CheckBox>        m_pPrintCB;
    VclPtr<ColorListBox>    m_pColorLB;
    VclPtr<SvxColorListBox> m_pColorLB;

    sal_Int32       m_nRubyUserValue;
    bool        m_bRubyUserValue;
@@ -71,12 +72,14 @@ class SwTextGridPage: public SfxTabPage
    void PutGridItem(SfxItemSet& rSet);
    static void SetLinesOrCharsRanges(FixedText & rField, const sal_Int32 nValue );

    void GridModifyHdl();

    DECL_LINK(GridTypeHdl, Button*, void);
    DECL_LINK(CharorLineChangedHdl, SpinField&, void);
    DECL_LINK(CharorLineLoseFocusdHdl, Control&, void);
    DECL_LINK(TextSizeChangedHdl, SpinField&, void);
    DECL_LINK(TextSizeLoseFocusHdl, Control&, void);
    DECL_LINK(GridModifyHdl, ListBox&, void);
    DECL_LINK(ColorModifyHdl, SvxColorListBox&, void);
    DECL_LINK(GridModifyClickHdl, Button*, void);
    DECL_LINK(DisplayGridHdl, Button*, void);

diff --git a/sw/source/uibase/shells/drawsh.cxx b/sw/source/uibase/shells/drawsh.cxx
index a0b3b35..d9aad7f 100644
--- a/sw/source/uibase/shells/drawsh.cxx
+++ b/sw/source/uibase/shells/drawsh.cxx
@@ -579,16 +579,6 @@ void SwDrawShell::GetFormTextState(SfxItemSet& rSet)
    SdrView* pDrView = rSh.GetDrawView();
    const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList();
    const SdrObject* pObj = nullptr;
    SvxFontWorkDialog* pDlg = nullptr;

    const sal_uInt16 nId = SvxFontWorkChildWindow::GetChildWindowId();

    SfxViewFrame* pVFrame = GetView().GetViewFrame();
    if ( pVFrame->HasChildWindow(nId) )
    {
        SfxChildWindow *pChildWindow = pVFrame->GetChildWindow(nId);
        pDlg = pChildWindow ? static_cast<SvxFontWorkDialog*>(pChildWindow->GetWindow()) : nullptr;
    }

    if ( rMarkList.GetMarkCount() == 1 )
        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
@@ -616,9 +606,6 @@ void SwDrawShell::GetFormTextState(SfxItemSet& rSet)
    }
    else
    {
        if ( pDlg )
            pDlg->SetColorList(XColorList::GetStdColorList());

        pDrView->GetAttributes( rSet );
    }
}
diff --git a/sw/source/uibase/shells/drwtxtsh.cxx b/sw/source/uibase/shells/drwtxtsh.cxx
index c159843..2dde260 100644
--- a/sw/source/uibase/shells/drwtxtsh.cxx
+++ b/sw/source/uibase/shells/drwtxtsh.cxx
@@ -239,16 +239,6 @@ void SwDrawTextShell::GetFormTextState(SfxItemSet& rSet)
    SdrView* pDrView = rSh.GetDrawView();
    const SdrMarkList& rMarkList = pDrView->GetMarkedObjectList();
    const SdrObject* pObj = nullptr;
    SvxFontWorkDialog* pDlg = nullptr;

    const sal_uInt16 nId = SvxFontWorkChildWindow::GetChildWindowId();

    SfxViewFrame* pVFrame = GetView().GetViewFrame();
    if (pVFrame->HasChildWindow(nId))
    {
        SfxChildWindow* pWnd = pVFrame->GetChildWindow(nId);
        pDlg = pWnd ? static_cast<SvxFontWorkDialog*>(pWnd->GetWindow()) : nullptr;
    }

    if ( rMarkList.GetMarkCount() == 1 )
        pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
@@ -276,9 +266,6 @@ void SwDrawTextShell::GetFormTextState(SfxItemSet& rSet)
    }
    else
    {
        if ( pDlg )
            pDlg->SetColorList(XColorList::GetStdColorList());

        pDrView->GetAttributes( rSet );
    }
}
diff --git a/sw/source/uibase/sidebar/PageStylesPanel.cxx b/sw/source/uibase/sidebar/PageStylesPanel.cxx
index 95985af..cde9ae9 100644
--- a/sw/source/uibase/sidebar/PageStylesPanel.cxx
+++ b/sw/source/uibase/sidebar/PageStylesPanel.cxx
@@ -22,6 +22,7 @@
#include <editeng/sizeitem.hxx>
#include <editeng/paperinf.hxx>
#include <svx/svxids.hrc>
#include <svx/colorbox.hxx>
#include <svx/dlgutil.hxx>
#include <svx/rulritem.hxx>
#include "svx/drawitem.hxx"
@@ -142,22 +143,20 @@ void PageStylesPanel::dispose()
void PageStylesPanel::Initialize()
{
    aCustomEntry = mpCustomEntry->GetText();
    mpColumnCount->SetSelectHdl( LINK(this, PageStylesPanel, ModifyColumnCountHdl) );

    SvxNumOptionsTabPageHelper::GetI18nNumbering( *mpNumberSelectLB, ::std::numeric_limits<sal_uInt16>::max());
    mpNumberSelectLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyNumberingHdl) );

    mpLayoutSelectLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyLayoutHdl) );
    mpBgFillType->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillStyleHdl));
    mpBgColorLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorHdl));
    mpBgGradientLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorHdl));
    mpBgHatchingLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorHdl));
    mpBgBitmapLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorHdl));

    mpBindings->Invalidate(SID_ATTR_PAGE_COLUMN);
    mpBindings->Invalidate(SID_ATTR_PAGE);
    mpBindings->Invalidate(SID_ATTR_PAGE_FILLSTYLE);
    Update();

    mpColumnCount->SetSelectHdl( LINK(this, PageStylesPanel, ModifyColumnCountHdl) );
    SvxNumOptionsTabPageHelper::GetI18nNumbering( *mpNumberSelectLB, ::std::numeric_limits<sal_uInt16>::max());
    mpNumberSelectLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyNumberingHdl) );
    mpLayoutSelectLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyLayoutHdl) );
    mpBgFillType->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillStyleHdl));
    mpBgColorLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorListHdl));
    mpBgGradientLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorListHdl));
    mpBgHatchingLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorHdl));
    mpBgBitmapLB->SetSelectHdl( LINK(this, PageStylesPanel, ModifyFillColorHdl));
}

void PageStylesPanel::Update()
@@ -180,49 +179,22 @@ void PageStylesPanel::Update()
            mpBgGradientLB->Hide();
            mpBgHatchingLB->Hide();
            mpBgColorLB->Show();
            mpBgColorLB->Clear();
            const SvxColorListItem aItem( *static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE)));
            mpBgColorLB->Fill(aItem.GetColorList());

            const Color aColor = GetColorSetOrDefault();
            mpBgColorLB->SelectEntry( aColor );

            if(mpBgColorLB->GetSelectEntryCount() == 0)
            {
                mpBgColorLB->InsertEntry(aColor, OUString());
                mpBgColorLB->SelectEntry(aColor);
            }
            mpBgColorLB->SelectEntry(aColor);
        }
        break;
        case drawing::FillStyle_GRADIENT:
        {
            const SvxColorListItem aItem(*static_cast<const SvxColorListItem*>(pSh->GetItem(SID_COLOR_TABLE)));
            mpBgBitmapLB->Hide();
            mpBgHatchingLB->Hide();
            mpBgColorLB->Show();
            mpBgGradientLB->Show();
            mpBgColorLB->Clear();
            mpBgGradientLB->Clear();
            mpBgColorLB->Fill(aItem.GetColorList());
            mpBgGradientLB->Fill(aItem.GetColorList());

            const XGradient xGradient = GetGradientSetOrDefault();
            const Color aStartColor = xGradient.GetStartColor();
            mpBgColorLB->SelectEntry(aStartColor);
            const Color aEndColor = xGradient.GetEndColor();
            mpBgColorLB->SelectEntry( aStartColor );
            mpBgGradientLB->SelectEntry( aEndColor );

            if(mpBgColorLB->GetSelectEntryCount() == 0)
            {
                mpBgColorLB->InsertEntry(aStartColor, OUString());
                mpBgColorLB->SelectEntry(aStartColor);
            }

            if(mpBgGradientLB->GetSelectEntryCount() == 0)
            {
                mpBgGradientLB->InsertEntry(aEndColor, OUString());
                mpBgGradientLB->SelectEntry(aEndColor);
            }
            mpBgGradientLB->SelectEntry(aEndColor);
        }
        break;

@@ -514,7 +486,7 @@ IMPL_LINK_NOARG(PageStylesPanel, ModifyFillStyleHdl, ListBox&, void)
    mpBgFillType->Selected();
}

IMPL_LINK_NOARG(PageStylesPanel, ModifyFillColorHdl, ListBox&, void)
void PageStylesPanel::ModifyFillColor()
{
    const drawing::FillStyle eXFS = (drawing::FillStyle)mpBgFillType->GetSelectEntryPos();
    SfxObjectShell* pSh = SfxObjectShell::Current();
@@ -564,6 +536,16 @@ IMPL_LINK_NOARG(PageStylesPanel, ModifyFillColorHdl, ListBox&, void)
    }
}

IMPL_LINK_NOARG(PageStylesPanel, ModifyFillColorHdl, ListBox&, void)
{
    ModifyFillColor();
}

IMPL_LINK_NOARG(PageStylesPanel, ModifyFillColorListHdl, SvxColorListBox&, void)
{
    ModifyFillColor();
}

} }

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/uibase/sidebar/PageStylesPanel.hxx b/sw/source/uibase/sidebar/PageStylesPanel.hxx
index c0dacdb..558b74e7 100644
--- a/sw/source/uibase/sidebar/PageStylesPanel.hxx
+++ b/sw/source/uibase/sidebar/PageStylesPanel.hxx
@@ -49,6 +49,7 @@
#include <svx/pagenumberlistbox.hxx>

class List;
class SvxColorListBox;
namespace sw { namespace sidebar {

class PageStylesPanel:
@@ -94,9 +95,9 @@ private:
    ::sfx2::sidebar::ControllerItem maBgBitmapControl;
    ::sfx2::sidebar::ControllerItem maBgFillStyleControl;

    VclPtr<ColorLB>         mpBgColorLB;
    VclPtr<SvxColorListBox> mpBgColorLB;
    VclPtr<SvxFillAttrBox>  mpBgHatchingLB;
    VclPtr<ColorLB>         mpBgGradientLB;
    VclPtr<SvxColorListBox> mpBgGradientLB;
    VclPtr<SvxFillAttrBox>  mpBgBitmapLB;
    VclPtr<ListBox>         mpLayoutSelectLB;
    VclPtr<ListBox>         mpColumnCount;
@@ -112,11 +113,14 @@ private:
    const OUString GetHatchingSetOrDefault();
    const OUString GetBitmapSetOrDefault();

    void ModifyFillColor();

    DECL_LINK( ModifyColumnCountHdl, ListBox&, void );
    DECL_LINK( ModifyNumberingHdl, ListBox&, void );
    DECL_LINK( ModifyLayoutHdl, ListBox&, void );
    DECL_LINK( ModifyFillStyleHdl, ListBox&, void );
    DECL_LINK( ModifyFillColorHdl, ListBox&, void );
    DECL_LINK( ModifyFillColorListHdl, SvxColorListBox&, void );
};

} } //end of namespace sw::sidebar
diff --git a/sw/uiconfig/swriter/ui/columnpage.ui b/sw/uiconfig/swriter/ui/columnpage.ui
index 96f4db0..50be6e0 100644
--- a/sw/uiconfig/swriter/ui/columnpage.ui
+++ b/sw/uiconfig/swriter/ui/columnpage.ui
@@ -538,7 +538,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="colorlb">
                  <object class="svxlo-SvxColorListBox" id="colorlb">
                    <property name="visible">True</property>
                    <property name="dropdown">True</property>
                    <property name="can_focus">False</property>
diff --git a/sw/uiconfig/swriter/ui/footnoteareapage.ui b/sw/uiconfig/swriter/ui/footnoteareapage.ui
index adcfbdb..420d241 100644
--- a/sw/uiconfig/swriter/ui/footnoteareapage.ui
+++ b/sw/uiconfig/swriter/ui/footnoteareapage.ui
@@ -342,7 +342,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="color">
                  <object class="svxlo-SvxColorListBox" id="color">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="halign">start</property>
diff --git a/sw/uiconfig/swriter/ui/optredlinepage.ui b/sw/uiconfig/swriter/ui/optredlinepage.ui
index 8f3fc93..8d35c04 100644
--- a/sw/uiconfig/swriter/ui/optredlinepage.ui
+++ b/sw/uiconfig/swriter/ui/optredlinepage.ui
@@ -85,7 +85,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="insertcolor">
                  <object class="svxlo-SvxColorListBox" id="insertcolor">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="valign">center</property>
@@ -196,7 +196,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="deletedcolor">
                  <object class="svxlo-SvxColorListBox" id="deletedcolor">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="valign">center</property>
@@ -307,7 +307,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="changedcolor">
                  <object class="svxlo-SvxColorListBox" id="changedcolor">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="valign">center</property>
@@ -379,7 +379,7 @@
                <property name="row_spacing">6</property>
                <property name="column_spacing">12</property>
                <child>
                  <object class="svtlo-ColorListBox" id="markcolor">
                  <object class="svxlo-SvxColorListBox" id="markcolor">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="valign">center</property>
@@ -472,18 +472,6 @@
        <property name="top_attach">3</property>
      </packing>
    </child>
    <child>
      <object class="GtkLabel" id="byauthor">
        <property name="can_focus">False</property>
        <property name="no_show_all">True</property>
        <property name="label" translatable="yes">By author</property>
        <property name="use_underline">True</property>
      </object>
      <packing>
        <property name="left_attach">0</property>
        <property name="top_attach">4</property>
      </packing>
    </child>
  </object>
  <object class="GtkSizeGroup" id="sizegroup1">
    <widgets>
diff --git a/sw/uiconfig/swriter/ui/pagestylespanel.ui b/sw/uiconfig/swriter/ui/pagestylespanel.ui
index 4246cde..a905ab3 100644
--- a/sw/uiconfig/swriter/ui/pagestylespanel.ui
+++ b/sw/uiconfig/swriter/ui/pagestylespanel.ui
@@ -171,7 +171,7 @@
          </packing>
        </child>
        <child>
          <object class="svxlo-ColorLB" id="lbcolor">
          <object class="svxlo-SvxColorListBox" id="lbcolor">
            <property name="width_request">150</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
@@ -184,7 +184,7 @@
          </packing>
        </child>
        <child>
          <object class="svxlo-ColorLB" id="lbgradient">
          <object class="svxlo-SvxColorListBox" id="lbgradient">
            <property name="width_request">150</property>
            <property name="visible">True</property>
            <property name="can_focus">False</property>
diff --git a/sw/uiconfig/swriter/ui/textgridpage.ui b/sw/uiconfig/swriter/ui/textgridpage.ui
index d95343d..70ecde4 100644
--- a/sw/uiconfig/swriter/ui/textgridpage.ui
+++ b/sw/uiconfig/swriter/ui/textgridpage.ui
@@ -476,7 +476,7 @@
                  </packing>
                </child>
                <child>
                  <object class="svtlo-ColorListBox" id="listLB_COLOR">
                  <object class="svxlo-SvxColorListBox" id="listLB_COLOR">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <property name="halign">start</property>