From 88928e712a18c3c68d3b90f9b410a765385d9d38 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 00:52:50 +0200 Subject: [PATCH 01/12] Use system colours in wxAuiGenericTabArt Don't hardcode black and grey, which don't look right in all themes. --- src/aui/tabart.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index b4b8ab6397..eb5dc8cda6 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -176,14 +176,14 @@ static const unsigned char list_bits[] = { wxAuiGenericTabArt::wxAuiGenericTabArt() : m_normalFont(*wxNORMAL_FONT) , m_selectedFont(m_normalFont) - , m_activeCloseBmp(wxAuiBitmapFromBits(close_bits, 16, 16, *wxBLACK)) - , m_disabledCloseBmp(wxAuiBitmapFromBits(close_bits, 16, 16, wxColour(128,128,128))) - , m_activeLeftBmp(wxAuiBitmapFromBits(left_bits, 16, 16, *wxBLACK)) - , m_disabledLeftBmp(wxAuiBitmapFromBits(left_bits, 16, 16, wxColour(128,128,128))) - , m_activeRightBmp(wxAuiBitmapFromBits(right_bits, 16, 16, *wxBLACK)) - , m_disabledRightBmp(wxAuiBitmapFromBits(right_bits, 16, 16, wxColour(128,128,128))) - , m_activeWindowListBmp(wxAuiBitmapFromBits(list_bits, 16, 16, *wxBLACK)) - , m_disabledWindowListBmp(wxAuiBitmapFromBits(list_bits, 16, 16, wxColour(128,128,128))) + , m_activeCloseBmp(wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) + , m_disabledCloseBmp(wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) + , m_activeLeftBmp(wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) + , m_disabledLeftBmp(wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) + , m_activeRightBmp(wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) + , m_disabledRightBmp(wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) + , m_activeWindowListBmp(wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) + , m_disabledWindowListBmp(wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) { m_selectedFont.SetWeight(wxFONTWEIGHT_BOLD); m_measuringFont = m_selectedFont; From e12a9b11e4929b6921aa8d29ff30b1f452ab0a7c Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 00:54:02 +0200 Subject: [PATCH 02/12] Update AUI art colours after system colours change Move code initializing colours and colour-dependent bitmaps from ctor to UpdateColoursFromSystem(), which means that now this is done not only once, when creating the object, but also later if the system colours change (e.g. due to turning on or off the dark mode). --- src/aui/auibar.cpp | 27 +++++++++++++++------------ src/aui/tabart.cpp | 17 +++++++++-------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index 9e04d20d38..8b36681b7b 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -139,18 +139,6 @@ wxAuiGenericToolBarArt::wxAuiGenericToolBarArt() m_overflowSize = wxWindow::FromDIP(16, NULL); m_dropdownSize = wxWindow::FromDIP(10, NULL); - // TODO: Provide x1.5 and x2.0 versions or migrate to SVG. - static const unsigned char buttonDropdownBits[] = { 0xe0, 0xf1, 0xfb }; - static const unsigned char overflowBits[] = { 0x80, 0xff, 0x80, 0xc1, 0xe3, 0xf7 }; - - m_buttonDropDownBmp = wxAuiBitmapFromBits(buttonDropdownBits, 5, 3, - wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledButtonDropDownBmp = wxAuiBitmapFromBits( - buttonDropdownBits, 5, 3, - wxColor(128,128,128)); - m_overflowBmp = wxAuiBitmapFromBits(overflowBits, 7, 6, - wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledOverflowBmp = wxAuiBitmapFromBits(overflowBits, 7, 6, wxColor(128,128,128)); m_font = *wxNORMAL_FONT; } @@ -175,6 +163,21 @@ void wxAuiGenericToolBarArt::UpdateColoursFromSystem() m_gripperPen1 = wxPen(darker5Colour, pen_width); m_gripperPen2 = wxPen(darker3Colour, pen_width); m_gripperPen3 = wxPen(*wxStockGDI::GetColour(wxStockGDI::COLOUR_WHITE), pen_width); + + // Note: update the bitmaps here as they depend on the system colours too. + + // TODO: Provide x1.5 and x2.0 versions or migrate to SVG. + static const unsigned char buttonDropdownBits[] = { 0xe0, 0xf1, 0xfb }; + static const unsigned char overflowBits[] = { 0x80, 0xff, 0x80, 0xc1, 0xe3, 0xf7 }; + + m_buttonDropDownBmp = wxAuiBitmapFromBits(buttonDropdownBits, 5, 3, + wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_disabledButtonDropDownBmp = wxAuiBitmapFromBits( + buttonDropdownBits, 5, 3, + wxColor(128,128,128)); + m_overflowBmp = wxAuiBitmapFromBits(overflowBits, 7, 6, + wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_disabledOverflowBmp = wxAuiBitmapFromBits(overflowBits, 7, 6, wxColor(128,128,128)); } void wxAuiGenericToolBarArt::SetFlags(unsigned int flags) diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index eb5dc8cda6..e96a172b72 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -176,14 +176,6 @@ static const unsigned char list_bits[] = { wxAuiGenericTabArt::wxAuiGenericTabArt() : m_normalFont(*wxNORMAL_FONT) , m_selectedFont(m_normalFont) - , m_activeCloseBmp(wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) - , m_disabledCloseBmp(wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) - , m_activeLeftBmp(wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) - , m_disabledLeftBmp(wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) - , m_activeRightBmp(wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) - , m_disabledRightBmp(wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) - , m_activeWindowListBmp(wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT))) - , m_disabledWindowListBmp(wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION))) { m_selectedFont.SetWeight(wxFONTWEIGHT_BOLD); m_measuringFont = m_selectedFont; @@ -223,6 +215,15 @@ void wxAuiGenericTabArt::UpdateColoursFromSystem() m_borderPen = wxPen(borderColour); m_baseColourPen = wxPen(m_baseColour); m_baseColourBrush = wxBrush(m_baseColour); + + m_activeCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_disabledCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_activeLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_disabledLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_activeRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_disabledRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_activeWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_disabledWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); } wxAuiTabArt* wxAuiGenericTabArt::Clone() From 3d33fcdba85340acf0fdcb69d56d8ef27ee14ee5 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 00:57:09 +0200 Subject: [PATCH 03/12] Adapt the gradient used in AUI tab art in dark mode Invert its direction and make it darker for better fit. --- src/aui/tabart.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index e96a172b72..5c2cf2710a 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -281,9 +281,19 @@ void wxAuiGenericTabArt::DrawBackground(wxDC& dc, wxWindow* WXUNUSED(wnd), const wxRect& rect) { - // draw background - int topLightness = 90; - int bottomLightness = 170; + // draw background using arbitrary hard-coded, but at least adapted to dark + // mode, gradient + int topLightness, bottomLightness; + if (wxSystemSettings::GetAppearance().IsUsingDarkBackground()) + { + topLightness = 110; + bottomLightness = 90; + } + else + { + topLightness = 90; + bottomLightness = 170; + } wxColor top_color = m_baseColour.ChangeLightness(topLightness); wxColor bottom_color = m_baseColour.ChangeLightness(bottomLightness); From f3d4f01513ffc0b5fd7a27ae5935786bf097c6de Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 00:58:14 +0200 Subject: [PATCH 04/12] Improve dark mode test in wxAuiGenericTabArt Use wxSystemSettings for this instead of manually checking the base colour components which is both more verbose/difficult and less reliable. --- src/aui/tabart.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index 5c2cf2710a..497ea8ba86 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -447,9 +447,8 @@ void wxAuiGenericTabArt::DrawTab(wxDC& dc, int drawn_tab_yoff = border_points[1].y; int drawn_tab_height = border_points[0].y - border_points[1].y; - bool isdark = (m_baseColour.Red() < 75) - && (m_baseColour.Green() < 75) - && (m_baseColour.Blue() < 75); + bool isdark = wxSystemSettings::GetAppearance().IsUsingDarkBackground(); + wxColor back_color = m_baseColour; if (page.active) { From a829b1df06e3961da8747b209e9eb6e575ee8484 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 01:02:28 +0200 Subject: [PATCH 05/12] Simplify bitmap initialization in wxAuiDefaultDockArt Reduce the number of __WXMAC__ checks by using helper wxColour variables which have different values under Mac and non-Mac. No real changes. --- src/aui/dockart.cpp | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index eb18132570..6171fadc8e 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -268,31 +268,24 @@ wxAuiDefaultDockArt::InitBitmaps () 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; #ifdef __WXMAC__ - m_inactiveCloseBitmap = wxAuiBitmapFromBits(close_bits, 16, 16, *wxWHITE); - m_activeCloseBitmap = wxAuiBitmapFromBits(close_bits, 16, 16, *wxWHITE ); + const wxColour inactive = *wxWHITE; + const wxColour active = *wxWHITE; #else - m_inactiveCloseBitmap = wxAuiBitmapFromBits(close_bits, 16, 16, m_inactiveCaptionTextColour); - m_activeCloseBitmap = wxAuiBitmapFromBits(close_bits, 16, 16, m_activeCaptionTextColour); + const wxColor inactive = m_inactiveCaptionTextColour; + const wxColor active = m_activeCaptionTextColour; #endif -#ifdef __WXMAC__ - m_inactiveMaximizeBitmap = wxAuiBitmapFromBits(maximize_bits, 16, 16, *wxWHITE); - m_activeMaximizeBitmap = wxAuiBitmapFromBits(maximize_bits, 16, 16, *wxWHITE ); -#else - m_inactiveMaximizeBitmap = wxAuiBitmapFromBits(maximize_bits, 16, 16, m_inactiveCaptionTextColour); - m_activeMaximizeBitmap = wxAuiBitmapFromBits(maximize_bits, 16, 16, m_activeCaptionTextColour); -#endif + m_inactiveCloseBitmap = wxAuiBitmapFromBits(close_bits, 16, 16, inactive); + m_activeCloseBitmap = wxAuiBitmapFromBits(close_bits, 16, 16, active); -#ifdef __WXMAC__ - m_inactiveRestoreBitmap = wxAuiBitmapFromBits(restore_bits, 16, 16, *wxWHITE); - m_activeRestoreBitmap = wxAuiBitmapFromBits(restore_bits, 16, 16, *wxWHITE ); -#else - m_inactiveRestoreBitmap = wxAuiBitmapFromBits(restore_bits, 16, 16, m_inactiveCaptionTextColour); - m_activeRestoreBitmap = wxAuiBitmapFromBits(restore_bits, 16, 16, m_activeCaptionTextColour); -#endif + m_inactiveMaximizeBitmap = wxAuiBitmapFromBits(maximize_bits, 16, 16, inactive); + m_activeMaximizeBitmap = wxAuiBitmapFromBits(maximize_bits, 16, 16, active); - m_inactivePinBitmap = wxAuiBitmapFromBits(pin_bits, 16, 16, m_inactiveCaptionTextColour); - m_activePinBitmap = wxAuiBitmapFromBits(pin_bits, 16, 16, m_activeCaptionTextColour); + m_inactiveRestoreBitmap = wxAuiBitmapFromBits(restore_bits, 16, 16, inactive); + m_activeRestoreBitmap = wxAuiBitmapFromBits(restore_bits, 16, 16, active); + + m_inactivePinBitmap = wxAuiBitmapFromBits(pin_bits, 16, 16, inactive); + m_activePinBitmap = wxAuiBitmapFromBits(pin_bits, 16, 16, active); } void wxAuiDefaultDockArt::UpdateColoursFromSystem() From 872692132a5946cc1fdac939775a17e24e6c32d0 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 01:03:15 +0200 Subject: [PATCH 06/12] Use more appropriate colours for AUI dock art under Mac Use system colours instead of hard-coding white. This is still not ideal because ideally the same wxSYS_COLOUR_XXX constants should be usable under all platforms, but better than just using completely wrong colours when using dark mode under Mac. --- src/aui/dockart.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index 6171fadc8e..c4a328459e 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -268,8 +268,8 @@ wxAuiDefaultDockArt::InitBitmaps () 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff}; #ifdef __WXMAC__ - const wxColour inactive = *wxWHITE; - const wxColour active = *wxWHITE; + const wxColour inactive = wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION); + const wxColour active = wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT); #else const wxColor inactive = m_inactiveCaptionTextColour; const wxColor active = m_activeCaptionTextColour; From 623c116b7a7401e04ce6674eabaf1ccb4ca328cf Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 15:57:59 +0200 Subject: [PATCH 07/12] Honour the colour alpha channel in wxAuiBitmapFromBits() This fixes creating wrong bitmaps for system colours with alpha and allows to use the correct wxSYS_COLOUR_INACTIVECAPTIONTEXT constant in wxAuiGenericTabArt instead of a wrong but, due to the loss of alpha, better looking wxSYS_COLOUR_INACTIVECAPTION which was used before. --- src/aui/dockart.cpp | 35 ++++++++++++++++++++++++++++++++--- src/aui/tabart.cpp | 8 ++++---- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index c4a328459e..22f0f65e11 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -95,9 +95,38 @@ wxBitmap wxAuiBitmapFromBits(const unsigned char bits[], int w, int h, const wxColour& color) { wxImage img = wxBitmap((const char*)bits, w, h).ConvertToImage(); - img.Replace(0,0,0,123,123,123); - img.Replace(255,255,255,color.Red(),color.Green(),color.Blue()); - img.SetMaskColour(123,123,123); + if (color.Alpha() == wxALPHA_OPAQUE) + { + img.Replace(0,0,0,123,123,123); + img.Replace(255,255,255,color.Red(),color.Green(),color.Blue()); + img.SetMaskColour(123,123,123); + } + else + { + img.InitAlpha(); + const int newr = color.Red(); + const int newg = color.Green(); + const int newb = color.Blue(); + const int newa = color.Alpha(); + for (int x = 0; x < w; x++) + { + for (int y = 0; y < h; y++) + { + int r = img.GetRed(x, y); + int g = img.GetGreen(x, y); + int b = img.GetBlue(x, y); + if (r == 0 && g == 0 && b == 0) + { + img.SetAlpha(x, y, wxALPHA_TRANSPARENT); + } + else + { + img.SetRGB(x, y, newr, newg, newb); + img.SetAlpha(x, y, newa); + } + } + } + } return wxBitmap(img); } diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index 497ea8ba86..95a7a2bd5c 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -217,13 +217,13 @@ void wxAuiGenericTabArt::UpdateColoursFromSystem() m_baseColourBrush = wxBrush(m_baseColour); m_activeCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_disabledCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); m_activeLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_disabledLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); m_activeRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_disabledRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); m_activeWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTION)); + m_disabledWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); } wxAuiTabArt* wxAuiGenericTabArt::Clone() From 01e9bd008da4293e18b27333da882831d590b1b0 Mon Sep 17 00:00:00 2001 From: Daniel Kulp Date: Mon, 13 Jul 2020 15:59:46 +0200 Subject: [PATCH 08/12] Use previously Mac-specific colours for all platforms in wxAUI Get rid of platform checks in wxAUI and use (the same) system colours everywhere. --- src/aui/auibar.cpp | 20 -------------------- src/aui/dockart.cpp | 4 ---- src/aui/tabart.cpp | 4 ---- 3 files changed, 28 deletions(-) diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index 8b36681b7b..291e49e842 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -69,11 +69,7 @@ wxBitmap wxAuiBitmapFromBits(const unsigned char bits[], int w, int h, static wxColor GetBaseColor() { -#if defined( __WXMAC__ ) && wxOSX_USE_COCOA_OR_CARBON - wxColor baseColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); -#else wxColor baseColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); -#endif // the baseColour is too pale to use as our base colour, // so darken it a bit -- @@ -252,11 +248,7 @@ void wxAuiGenericToolBarArt::DrawLabel( const wxRect& rect) { dc.SetFont(m_font); -#ifdef __WXMAC__ dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); -#else - dc.SetTextForeground(*wxBLACK); -#endif // we only care about the text height here since the text // will get cropped based on the width of the item @@ -369,11 +361,7 @@ void wxAuiGenericToolBarArt::DrawButton( dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED) { -#ifdef __WXMAC__ dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); -#else - dc.SetTextForeground(DISABLED_TEXT_COLOR); -#endif } if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() ) @@ -503,11 +491,7 @@ void wxAuiGenericToolBarArt::DrawDropDownButton( dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED) { -#ifdef __WXMAC__ dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); -#else - dc.SetTextForeground(DISABLED_TEXT_COLOR); -#endif } if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() ) @@ -547,11 +531,7 @@ void wxAuiGenericToolBarArt::DrawControlLabel( return; // set the label's text color -#ifdef __WXMAC__ dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); -#else - dc.SetTextForeground(*wxBLACK); -#endif textX = rect.x + (rect.width/2) - (textWidth/2) + 1; textY = rect.y + rect.height - textHeight - 1; diff --git a/src/aui/dockart.cpp b/src/aui/dockart.cpp index 22f0f65e11..d0cd248896 100644 --- a/src/aui/dockart.cpp +++ b/src/aui/dockart.cpp @@ -319,11 +319,7 @@ wxAuiDefaultDockArt::InitBitmaps () void wxAuiDefaultDockArt::UpdateColoursFromSystem() { -#if defined( __WXMAC__ ) && wxOSX_USE_COCOA_OR_CARBON - wxColor baseColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); -#else wxColor baseColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); -#endif // the baseColour is too pale to use as our base colour, // so darken it a bit -- diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index 95a7a2bd5c..807155b17d 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -193,11 +193,7 @@ wxAuiGenericTabArt::~wxAuiGenericTabArt() void wxAuiGenericTabArt::UpdateColoursFromSystem() { -#if defined( __WXMAC__ ) && wxOSX_USE_COCOA_OR_CARBON - wxColor baseColour = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); -#else wxColor baseColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); -#endif // the baseColour is too pale to use as our base colour, // so darken it a bit -- From 77095c5fbd40cbf5514bd2d9a9bb6e55109dd74d Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 13 Jul 2020 16:01:05 +0200 Subject: [PATCH 09/12] Remove the now unused DISABLED_TEXT_COLOR constant The previous commit removes all references to this hardcoded colour. --- src/aui/auibar.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index 291e49e842..7434a494ec 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -116,13 +116,6 @@ private: }; - -static const unsigned char - DISABLED_TEXT_GREY_HUE = wxColour::AlphaBlend(0, 255, 0.4); -const wxColour DISABLED_TEXT_COLOR(DISABLED_TEXT_GREY_HUE, - DISABLED_TEXT_GREY_HUE, - DISABLED_TEXT_GREY_HUE); - wxAuiGenericToolBarArt::wxAuiGenericToolBarArt() { UpdateColoursFromSystem(); From 6eab84e26d384f147983a308085ca1e55f91a7fa Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 13 Jul 2020 20:24:57 +0200 Subject: [PATCH 10/12] Use wxSYS_COLOUR_GRAYTEXT for disabled AUI buttons labels This is more appropriate than wxSYS_COLOUR_INACTIVECAPTIONTEXT which just happened to be the same as wxSYS_COLOUR_GRAYTEXT under Mac, but this is not true elsewhere. --- src/aui/auibar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index 7434a494ec..603c9e718d 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -354,7 +354,7 @@ void wxAuiGenericToolBarArt::DrawButton( dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED) { - dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); + dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); } if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() ) @@ -484,7 +484,7 @@ void wxAuiGenericToolBarArt::DrawDropDownButton( dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); if (item.GetState() & wxAUI_BUTTON_STATE_DISABLED) { - dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); + dc.SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); } if ( (m_flags & wxAUI_TB_TEXT) && !item.GetLabel().empty() ) From b0f82d41a3ace2651068db0758f4946c47de44bf Mon Sep 17 00:00:00 2001 From: mimi89999 Date: Tue, 14 Jul 2020 16:13:28 +0200 Subject: [PATCH 11/12] Use WINDOW/GRAYTEXT system colours for AUI tab art Those are more appropriate than the previously used CAPTIONTEXT and INACTIVECAPTIONTEXT under Linux and don't change anything under Mac, where they map to the same colours anyhow. --- src/aui/tabart.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index 807155b17d..e0d5b6f876 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -212,14 +212,14 @@ void wxAuiGenericTabArt::UpdateColoursFromSystem() m_baseColourPen = wxPen(m_baseColour); m_baseColourBrush = wxBrush(m_baseColour); - m_activeCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); + m_activeCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); m_disabledCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); - m_activeLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); - m_activeRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); - m_activeWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT)); - m_disabledWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); + m_activeLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + m_disabledLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); + m_activeRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + m_disabledRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); + m_activeWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); + m_disabledWindowListBmp = wxAuiBitmapFromBits(list_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); } wxAuiTabArt* wxAuiGenericTabArt::Clone() From c63eefded1f3695b5bc11784185af99775c973ac Mon Sep 17 00:00:00 2001 From: mimi89999 Date: Tue, 14 Jul 2020 16:14:38 +0200 Subject: [PATCH 12/12] Adjust disabled closed bitmap colour to better fit Linux themes Change the lightness of INACTIVECAPTIONTEXT to make it stand out better. --- src/aui/tabart.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/aui/tabart.cpp b/src/aui/tabart.cpp index e0d5b6f876..b378d72b05 100644 --- a/src/aui/tabart.cpp +++ b/src/aui/tabart.cpp @@ -212,8 +212,10 @@ void wxAuiGenericTabArt::UpdateColoursFromSystem() m_baseColourPen = wxPen(m_baseColour); m_baseColourBrush = wxBrush(m_baseColour); + const int disabledLightness = wxSystemSettings::GetAppearance().IsUsingDarkBackground() ? 130 : 70; + m_activeCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); - m_disabledCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT)); + m_disabledCloseBmp = wxAuiBitmapFromBits(close_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_INACTIVECAPTIONTEXT).ChangeLightness(disabledLightness)); m_activeLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); m_disabledLeftBmp = wxAuiBitmapFromBits(left_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_GRAYTEXT)); m_activeRightBmp = wxAuiBitmapFromBits(right_bits, 16, 16, wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT));