Add wxRibbon panel border colour option

Add wxRIBBON_ART_PANEL_HOVER_BORDER_COLOUR and
wxRIBBON_ART_PANEL_HOVER_BORDER_GRADIENT_COLOUR to allow further
customization of wxRibbon panels.

Closes https://github.com/wxWidgets/wxWidgets/pull/2239
This commit is contained in:
Gary Allen
2021-02-18 20:25:23 +02:00
committed by Vadim Zeitlin
parent 4705645243
commit 9b1829c300
3 changed files with 30 additions and 4 deletions

View File

@@ -90,6 +90,8 @@ enum wxRibbonArtSetting
wxRIBBON_ART_TAB_BORDER_COLOUR,
wxRIBBON_ART_PANEL_BORDER_COLOUR,
wxRIBBON_ART_PANEL_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_HOVER_BORDER_COLOUR,
wxRIBBON_ART_PANEL_HOVER_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_BORDER_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_LABEL_BACKGROUND_COLOUR,
@@ -756,6 +758,8 @@ protected:
wxPen m_page_border_pen;
wxPen m_panel_border_pen;
wxPen m_panel_border_gradient_pen;
wxPen m_panel_hover_border_pen;
wxPen m_panel_hover_border_gradient_pen;
wxPen m_panel_minimised_border_pen;
wxPen m_panel_minimised_border_gradient_pen;
wxPen m_panel_hover_button_border_pen;

View File

@@ -85,6 +85,10 @@ enum wxRibbonArtSetting
wxRIBBON_ART_TAB_BORDER_COLOUR,
wxRIBBON_ART_PANEL_BORDER_COLOUR,
wxRIBBON_ART_PANEL_BORDER_GRADIENT_COLOUR,
/// @since 3.1.5
wxRIBBON_ART_PANEL_HOVER_BORDER_COLOUR,
/// @since 3.1.5
wxRIBBON_ART_PANEL_HOVER_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_BORDER_COLOUR,
wxRIBBON_ART_PANEL_MINIMISED_BORDER_GRADIENT_COLOUR,
wxRIBBON_ART_PANEL_LABEL_BACKGROUND_COLOUR,

View File

@@ -389,8 +389,8 @@ void wxRibbonMSWArtProvider::SetColourScheme(
m_panel_minimised_border_gradient_pen = LikePrimary(-6.9, -0.17, -0.09);
m_panel_minimised_border_pen = LikePrimary(-5.3, -0.24, -0.06);
m_panel_border_gradient_pen = LikePrimary(-5.2, -0.15, -0.06);
m_panel_border_pen = LikePrimary(-2.8, -0.32, 0.02);
m_panel_hover_border_gradient_pen = m_panel_border_gradient_pen = LikePrimary(-5.2, -0.15, -0.06);
m_panel_hover_border_pen = m_panel_border_pen = LikePrimary(-2.8, -0.32, 0.02);
m_panel_label_background_brush = LikePrimary(-1.5, 0.03, 0.05);
m_panel_active_background_gradient_colour = LikePrimary(0.5, 0.34, 0.05);
m_panel_hover_label_background_brush = LikePrimary(1.0, 0.30, 0.09);
@@ -598,6 +598,8 @@ void wxRibbonMSWArtProvider::CloneTo(wxRibbonMSWArtProvider* copy) const
copy->m_page_border_pen = m_page_border_pen;
copy->m_panel_border_pen = m_panel_border_pen;
copy->m_panel_border_gradient_pen = m_panel_border_gradient_pen;
copy->m_panel_hover_border_pen = m_panel_hover_border_pen;
copy->m_panel_hover_border_gradient_pen = m_panel_hover_border_gradient_pen;
copy->m_panel_minimised_border_pen = m_panel_minimised_border_pen;
copy->m_panel_minimised_border_gradient_pen = m_panel_minimised_border_gradient_pen;
copy->m_panel_hover_button_border_pen = m_panel_hover_button_border_pen;
@@ -879,6 +881,10 @@ wxColour wxRibbonMSWArtProvider::GetColour(int id) const
return m_panel_border_pen.GetColour();
case wxRIBBON_ART_PANEL_BORDER_GRADIENT_COLOUR:
return m_panel_border_gradient_pen.GetColour();
case wxRIBBON_ART_PANEL_HOVER_BORDER_COLOUR:
return m_panel_hover_border_pen.GetColour();
case wxRIBBON_ART_PANEL_HOVER_BORDER_GRADIENT_COLOUR:
return m_panel_hover_border_gradient_pen.GetColour();
case wxRIBBON_ART_PANEL_MINIMISED_BORDER_COLOUR:
return m_panel_minimised_border_pen.GetColour();
case wxRIBBON_ART_PANEL_MINIMISED_BORDER_GRADIENT_COLOUR:
@@ -1167,6 +1173,12 @@ void wxRibbonMSWArtProvider::SetColour(int id, const wxColor& colour)
case wxRIBBON_ART_PANEL_BORDER_GRADIENT_COLOUR:
m_panel_border_gradient_pen.SetColour(colour);
break;
case wxRIBBON_ART_PANEL_HOVER_BORDER_COLOUR:
m_panel_hover_border_pen.SetColour(colour);
break;
case wxRIBBON_ART_PANEL_HOVER_BORDER_GRADIENT_COLOUR:
m_panel_hover_border_gradient_pen.SetColour(colour);
break;
case wxRIBBON_ART_PANEL_MINIMISED_BORDER_COLOUR:
m_panel_minimised_border_pen.SetColour(colour);
break;
@@ -1971,7 +1983,10 @@ void wxRibbonMSWArtProvider::DrawPanelBackground(
DrawPartialPageBackground(dc, wnd, client_rect, true);
}
DrawPanelBorder(dc, true_rect, m_panel_border_pen, m_panel_border_gradient_pen);
if(!wnd->IsHovered())
DrawPanelBorder(dc, true_rect, m_panel_border_pen, m_panel_border_gradient_pen);
else
DrawPanelBorder(dc, true_rect, m_panel_hover_border_pen, m_panel_hover_border_gradient_pen);
}
wxRect wxRibbonMSWArtProvider::GetPanelExtButtonArea(wxDC& WXUNUSED(dc),
@@ -2315,7 +2330,10 @@ void wxRibbonMSWArtProvider::DrawMinimisedPanel(
preview.y + (preview.height - 7 - bitmap.GetScaledHeight()) / 2, true);
}
DrawPanelBorder(dc, preview, m_panel_border_pen, m_panel_border_gradient_pen);
if (!wnd->IsHovered())
DrawPanelBorder(dc, preview, m_panel_border_pen, m_panel_border_gradient_pen);
else
DrawPanelBorder(dc, preview, m_panel_hover_border_pen, m_panel_hover_border_gradient_pen);
DrawPanelBorder(dc, true_rect, m_panel_minimised_border_pen,
m_panel_minimised_border_gradient_pen);