diff --git a/src/AColor.cpp b/src/AColor.cpp index 7a16c7a84..ec88e9f55 100644 --- a/src/AColor.cpp +++ b/src/AColor.cpp @@ -87,6 +87,9 @@ wxBrush AColor::tooltipBrush; wxPen AColor::sparePen; wxBrush AColor::spareBrush; +wxPen AColor::uglyPen; +wxBrush AColor::uglyBrush; + // // Draw an upward or downward pointing arrow. // @@ -262,7 +265,7 @@ wxColour AColor::Blend( const wxColour & c1, const wxColour & c2 ) return c3; } -void AColor::BevelTrackInfo(wxDC & dc, bool up, const wxRect & r) +void AColor::BevelTrackInfo(wxDC & dc, bool up, const wxRect & r, bool highlight) { #ifndef EXPERIMENTAL_THEMING Bevel( dc, up, r ); @@ -270,7 +273,7 @@ void AColor::BevelTrackInfo(wxDC & dc, bool up, const wxRect & r) wxColour col; col = Blend( theTheme.Colour( clrTrackInfo ), up ? wxColour( 255,255,255):wxColour(0,0,0)); - wxPen pen( col ); + wxPen pen( highlight ? uglyPen : col ); dc.SetPen( pen ); dc.DrawLine(r.x, r.y, r.x + r.width, r.y); @@ -279,7 +282,7 @@ void AColor::BevelTrackInfo(wxDC & dc, bool up, const wxRect & r) col = Blend( theTheme.Colour( clrTrackInfo ), up ? wxColour(0,0,0): wxColour(255,255,255)); pen.SetColour( col ); - dc.SetPen( pen ); + dc.SetPen( highlight ? uglyPen : pen ); dc.DrawLine(r.x + r.width, r.y, r.x + r.width, r.y + r.height); dc.DrawLine(r.x, r.y + r.height, r.x + r.width + 1, r.y + r.height); @@ -299,13 +302,15 @@ void AColor::UseThemeColour( wxDC * dc, int iIndex, int index2 ) dc->SetPen( sparePen ); } -void AColor::Light(wxDC * dc, bool selected) +void AColor::Light(wxDC * dc, bool selected, bool highlight) { if (!inited) Init(); int index = (int) selected; - dc->SetBrush(lightBrush[index]); - dc->SetPen(lightPen[index]); + auto &brush = highlight ? AColor::uglyBrush : lightBrush[index]; + dc->SetBrush( brush ); + auto &pen = highlight ? AColor::uglyPen : lightPen[index]; + dc->SetPen( pen ); } void AColor::Medium(wxDC * dc, bool selected) @@ -327,13 +332,15 @@ void AColor::MediumTrackInfo(wxDC * dc, bool selected) } -void AColor::Dark(wxDC * dc, bool selected) +void AColor::Dark(wxDC * dc, bool selected, bool highlight) { if (!inited) Init(); int index = (int) selected; - dc->SetBrush(darkBrush[index]); - dc->SetPen(darkPen[index]); + auto &brush = highlight ? AColor::uglyBrush : darkBrush[index]; + dc->SetBrush( brush ); + auto &pen = highlight ? AColor::uglyPen : darkPen[index]; + dc->SetPen( pen ); } void AColor::TrackPanelBackground(wxDC * dc, bool selected) @@ -503,6 +510,9 @@ void AColor::Init() tooltipPen.SetColour( wxSystemSettingsNative::GetColour(wxSYS_COLOUR_INFOTEXT) ); tooltipBrush.SetColour( wxSystemSettingsNative::GetColour(wxSYS_COLOUR_INFOBK) ); + uglyPen.SetColour( wxColour{ 0, 255, 0 } ); // saturated green + uglyBrush.SetColour( wxColour{ 255, 0, 255 } ); // saturated magenta + // A tiny gradient of yellow surrounding the current focused track theTheme.SetPenColour( trackFocusPens[0], clrTrackFocus0); theTheme.SetPenColour( trackFocusPens[1], clrTrackFocus1); diff --git a/src/AColor.h b/src/AColor.h index fe8d0c2c4..c4c6a5a94 100644 --- a/src/AColor.h +++ b/src/AColor.h @@ -68,16 +68,16 @@ class AColor { static void Bevel(wxDC & dc, bool up, const wxRect & r); static void Bevel2 (wxDC & dc, bool up, const wxRect & r, bool bSel=false, bool bHighlight = false); - static void BevelTrackInfo(wxDC & dc, bool up, const wxRect & r); + static void BevelTrackInfo(wxDC & dc, bool up, const wxRect & r, bool highlight = false); static wxColour Blend(const wxColour & c1, const wxColour & c2); static void UseThemeColour( wxDC * dc, int iIndex, int index2 =-1 ); static void TrackPanelBackground(wxDC * dc, bool selected); - static void Light(wxDC * dc, bool selected); + static void Light(wxDC * dc, bool selected, bool highlight = false); static void Medium(wxDC * dc, bool selected); static void MediumTrackInfo(wxDC * dc, bool selected); - static void Dark(wxDC * dc, bool selected); + static void Dark(wxDC * dc, bool selected, bool highlight = false); static void CursorColor(wxDC * dc); static void IndicatorColor(wxDC * dc, bool bIsNotRecording); @@ -139,6 +139,10 @@ class AColor { static const int gradientSteps = 512; static unsigned char gradient_pre[ColorGradientTotal][2][gradientSteps][3]; + // For experiments in mouse-over highlighting only + static wxPen uglyPen; + static wxBrush uglyBrush; + private: static wxPen sparePen; static wxBrush spareBrush;