From 3c28244806f1154af35d041119c11e93876e15b9 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Fri, 7 Aug 2020 11:09:05 -0400 Subject: [PATCH] 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. --- src/generic/grid.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 585f0b0a97..f6b7244760 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -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;