improve the look of the macOS combobox
Change-Id: I4484fabcf6d883deeb3e417e46ce3973f2332f94
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114251
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
diff --git a/include/vcl/settings.hxx b/include/vcl/settings.hxx
index 6795150..4926c4b 100644
--- a/include/vcl/settings.hxx
+++ b/include/vcl/settings.hxx
@@ -384,6 +384,18 @@ public:
void SetMenuHighlightTextColor( const Color& rColor );
const Color& GetMenuHighlightTextColor() const;
void SetListBoxWindowBackgroundColor( const Color& rColor );
const Color& GetListBoxWindowBackgroundColor() const;
void SetListBoxWindowTextColor( const Color& rColor );
const Color& GetListBoxWindowTextColor() const;
void SetListBoxWindowHighlightColor( const Color& rColor );
const Color& GetListBoxWindowHighlightColor() const;
void SetListBoxWindowHighlightTextColor( const Color& rColor );
const Color& GetListBoxWindowHighlightTextColor() const;
void SetTabTextColor( const Color& rColor );
const Color& GetTabTextColor() const;
diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx
index 984ff8c..574122a 100644
--- a/vcl/osx/salframe.cxx
+++ b/vcl/osx/salframe.cxx
@@ -1283,6 +1283,11 @@ SAL_WNODEPRECATED_DECLARATIONS_POP
aStyleSettings.SetMenuBarRolloverTextColor( aMenuTextColor );
aStyleSettings.SetMenuBarHighlightTextColor(aStyleSettings.GetMenuHighlightTextColor());
aStyleSettings.SetListBoxWindowBackgroundColor( aBackgroundColor );
aStyleSettings.SetListBoxWindowTextColor( aMenuTextColor );
aStyleSettings.SetListBoxWindowHighlightColor( aMenuHighlightColor );
aStyleSettings.SetListBoxWindowHighlightTextColor( aMenuHighlightTextColor );
// Set text colors for buttons and their different status according to OS settings, typically white for selected buttons,
// black otherwise
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index f17c828..82093fc 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -125,6 +125,10 @@ struct ImplStyleData
Color maMenuHighlightColor;
Color maMenuHighlightTextColor;
Color maMenuTextColor;
Color maListBoxWindowBackgroundColor;
Color maListBoxWindowTextColor;
Color maListBoxWindowHighlightColor;
Color maListBoxWindowHighlightTextColor;
Color maMenuBarTextColor;
Color maMenuBarRolloverTextColor;
Color maMenuBarHighlightTextColor;
@@ -546,6 +550,10 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
maMenuHighlightColor( rData.maMenuHighlightColor ),
maMenuHighlightTextColor( rData.maMenuHighlightTextColor ),
maMenuTextColor( rData.maMenuTextColor ),
maListBoxWindowBackgroundColor( rData.maListBoxWindowBackgroundColor ),
maListBoxWindowTextColor( rData.maListBoxWindowTextColor ),
maListBoxWindowHighlightColor( rData.maListBoxWindowHighlightColor ),
maListBoxWindowHighlightTextColor( rData.maListBoxWindowHighlightTextColor ),
maMenuBarTextColor( rData.maMenuBarTextColor ),
maMenuBarRolloverTextColor( rData.maMenuBarRolloverTextColor ),
maMenuBarHighlightTextColor( rData.maMenuBarHighlightTextColor ),
@@ -692,6 +700,10 @@ void ImplStyleData::SetStandardStyles()
maMenuBarRolloverColor = COL_BLUE;
maMenuBorderColor = COL_LIGHTGRAY;
maMenuTextColor = COL_BLACK;
maListBoxWindowBackgroundColor = COL_LIGHTGRAY;
maListBoxWindowTextColor = COL_BLACK;
maListBoxWindowHighlightColor = COL_BLUE;
maListBoxWindowHighlightTextColor = COL_WHITE;
maMenuBarTextColor = COL_BLACK;
maMenuBarRolloverTextColor = COL_WHITE;
maMenuBarHighlightTextColor = COL_WHITE;
@@ -1439,6 +1451,58 @@ StyleSettings::GetMenuHighlightTextColor() const
}
void
StyleSettings::SetListBoxWindowBackgroundColor( const Color& rColor )
{
CopyData();
mxData->maListBoxWindowBackgroundColor = rColor;
}
const Color&
StyleSettings::GetListBoxWindowBackgroundColor() const
{
return mxData->maListBoxWindowBackgroundColor;
}
void
StyleSettings::SetListBoxWindowTextColor( const Color& rColor )
{
CopyData();
mxData->maListBoxWindowTextColor = rColor;
}
const Color&
StyleSettings::GetListBoxWindowTextColor() const
{
return mxData->maListBoxWindowTextColor;
}
void
StyleSettings::SetListBoxWindowHighlightColor( const Color& rColor )
{
CopyData();
mxData->maListBoxWindowHighlightColor = rColor;
}
const Color&
StyleSettings::GetListBoxWindowHighlightColor() const
{
return mxData->maListBoxWindowHighlightColor;
}
void
StyleSettings::SetListBoxWindowHighlightTextColor( const Color& rColor )
{
CopyData();
mxData->maListBoxWindowHighlightTextColor = rColor;
}
const Color&
StyleSettings::GetListBoxWindowHighlightTextColor() const
{
return mxData->maListBoxWindowHighlightTextColor;
}
void
StyleSettings::SetTabTextColor( const Color& rColor )
{
CopyData();
@@ -2476,6 +2540,10 @@ bool StyleSettings::operator ==( const StyleSettings& rSet ) const
(mxData->maMenuBarRolloverColor == rSet.mxData->maMenuBarRolloverColor) &&
(mxData->maMenuBorderColor == rSet.mxData->maMenuBorderColor) &&
(mxData->maMenuTextColor == rSet.mxData->maMenuTextColor) &&
(mxData->maListBoxWindowBackgroundColor == rSet.mxData->maListBoxWindowBackgroundColor) &&
(mxData->maListBoxWindowTextColor == rSet.mxData->maListBoxWindowTextColor) &&
(mxData->maListBoxWindowHighlightColor == rSet.mxData->maListBoxWindowHighlightColor) &&
(mxData->maListBoxWindowHighlightTextColor == rSet.mxData->maListBoxWindowHighlightTextColor) &&
(mxData->maMenuBarTextColor == rSet.mxData->maMenuBarTextColor) &&
(mxData->maMenuBarRolloverTextColor == rSet.mxData->maMenuBarRolloverTextColor) &&
(mxData->maMenuHighlightColor == rSet.mxData->maMenuHighlightColor) &&
diff --git a/vcl/source/control/imp_listbox.cxx b/vcl/source/control/imp_listbox.cxx
index fa01c64..e0e731a 100644
--- a/vcl/source/control/imp_listbox.cxx
+++ b/vcl/source/control/imp_listbox.cxx
@@ -498,12 +498,12 @@ void ImplListBoxWindow::ApplySettings(vcl::RenderContext& rRenderContext)
const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();
ApplyControlFont(rRenderContext, rStyleSettings.GetFieldFont());
ApplyControlForeground(rRenderContext, rStyleSettings.GetFieldTextColor());
ApplyControlForeground(rRenderContext, rStyleSettings.GetListBoxWindowTextColor());
if (IsControlBackground())
rRenderContext.SetBackground(GetControlBackground());
else
rRenderContext.SetBackground(rStyleSettings.GetFieldColor());
rRenderContext.SetBackground(rStyleSettings.GetListBoxWindowBackgroundColor());
}
void ImplListBoxWindow::ImplCalcMetrics()
@@ -1617,8 +1617,8 @@ void ImplListBoxWindow::ImplPaint(vcl::RenderContext& rRenderContext, sal_Int32
bool bSelected = maEntryList.IsEntryPosSelected(nPos);
if (bSelected)
{
rRenderContext.SetTextColor(!IsEnabled() ? rStyleSettings.GetDisableColor() : rStyleSettings.GetHighlightTextColor());
rRenderContext.SetFillColor(rStyleSettings.GetHighlightColor());
rRenderContext.SetTextColor(!IsEnabled() ? rStyleSettings.GetDisableColor() : rStyleSettings.GetListBoxWindowHighlightTextColor());
rRenderContext.SetFillColor(rStyleSettings.GetListBoxWindowHighlightColor());
rRenderContext.SetLineColor();
rRenderContext.DrawRect(aRect);
}