Improve wxGrid appearance in dark mode under macOS

Use more appropriate colours for the row/column cell headers and don't
hardcode black (i.e. at least use white instead in dark mode) for the
frozen border.

Closes https://github.com/wxWidgets/wxWidgets/pull/2026

See #18941.
This commit is contained in:
Daniel Kulp
2020-08-07 11:09:05 -04:00
committed by Vadim Zeitlin
parent f8af2601c2
commit 3c28244806

View File

@@ -295,7 +295,7 @@ void wxGridRowHeaderRendererDefault::DrawBorder(const wxGrid& grid,
wxDC& dc,
wxRect& rect) const
{
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)));
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DDKSHADOW)));
dc.DrawLine(rect.GetRight(), rect.GetTop(),
rect.GetRight(), rect.GetBottom());
@@ -314,7 +314,7 @@ void wxGridRowHeaderRendererDefault::DrawBorder(const wxGrid& grid,
ofs = 1;
}
dc.SetPen(*wxWHITE_PEN);
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT)));
dc.DrawLine(rect.GetLeft() + ofs, rect.GetTop(),
rect.GetLeft() + ofs, rect.GetBottom());
dc.DrawLine(rect.GetLeft() + ofs, rect.GetTop(),
@@ -327,7 +327,7 @@ void wxGridColumnHeaderRendererDefault::DrawBorder(const wxGrid& grid,
wxDC& dc,
wxRect& rect) const
{
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)));
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DDKSHADOW)));
dc.DrawLine(rect.GetRight(), rect.GetTop(),
rect.GetRight(), rect.GetBottom());
dc.DrawLine(rect.GetLeft(), rect.GetBottom(),
@@ -343,7 +343,7 @@ void wxGridColumnHeaderRendererDefault::DrawBorder(const wxGrid& grid,
ofs = 1;
}
dc.SetPen(*wxWHITE_PEN);
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT)));
dc.DrawLine(rect.GetLeft(), rect.GetTop() + ofs,
rect.GetLeft(), rect.GetBottom());
dc.DrawLine(rect.GetLeft(), rect.GetTop() + ofs,
@@ -356,7 +356,7 @@ void wxGridCornerHeaderRendererDefault::DrawBorder(const wxGrid& grid,
wxDC& dc,
wxRect& rect) const
{
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW)));
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DDKSHADOW)));
dc.DrawLine(rect.GetRight() - 1, rect.GetBottom() - 1,
rect.GetRight() - 1, rect.GetTop());
dc.DrawLine(rect.GetRight() - 1, rect.GetBottom() - 1,
@@ -375,7 +375,7 @@ void wxGridCornerHeaderRendererDefault::DrawBorder(const wxGrid& grid,
ofs = 1;
}
dc.SetPen(*wxWHITE_PEN);
dc.SetPen(wxPen(wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT)));
dc.DrawLine(rect.GetLeft() + 1, rect.GetTop() + ofs,
rect.GetRight() - 1, rect.GetTop() + ofs);
dc.DrawLine(rect.GetLeft() + ofs, rect.GetTop() + ofs,
@@ -2848,10 +2848,14 @@ void wxGrid::Init()
m_gridLinesEnabled = true;
m_gridLinesClipHorz =
m_gridLinesClipVert = true;
m_cellHighlightColour = *wxBLACK;
m_cellHighlightColour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
m_cellHighlightPenWidth = 2;
m_cellHighlightROPenWidth = 1;
m_gridFrozenBorderColour = *wxBLACK;
if ( wxSystemSettings::GetAppearance().IsDark() )
m_gridFrozenBorderColour = *wxWHITE;
else
m_gridFrozenBorderColour = *wxBLACK;
m_gridFrozenBorderPenWidth = 2;
m_canDragColMove = false;