From 526502d1b9ece2849ab9b269d2c77a325804419a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Mon, 21 Jan 2013 11:19:00 +0000 Subject: [PATCH] Add wxAUI_TB_PLAIN_BACKGROUND wxAuiToolBar style. This style allows to use a plain, solid colour, background instead of the default gradient one. Closes #10585. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + include/wx/aui/auibar.h | 10 ++++++++++ interface/wx/aui/auibar.h | 20 ++++++++++++++++++++ src/aui/auibar.cpp | 19 +++++++++++++++++-- 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3637bd1d59..e5d0996db4 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -608,6 +608,7 @@ All (GUI): - Fix bug in generic wxDataViewCtrl column dragging (jobuz). - Add wxMask::GetBitmap() for wxMSW, wxGTK and wxOSX - Add wxCheckListBox::GetCheckedItems() (hartwigw). +- Add wxAUI_TB_PLAIN_BACKGROUND wxAuiToolBar style (Allann Jones). wxGTK: diff --git a/include/wx/aui/auibar.h b/include/wx/aui/auibar.h index a156877b27..d3ecc3fef8 100644 --- a/include/wx/aui/auibar.h +++ b/include/wx/aui/auibar.h @@ -39,6 +39,7 @@ enum wxAuiToolBarStyle // analogous to wxAUI_TB_VERTICAL, but forces the toolbar // to be horizontal wxAUI_TB_HORIZONTAL = 1 << 7, + wxAUI_TB_PLAIN_BACKGROUND = 1 << 8, wxAUI_TB_HORZ_TEXT = (wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_TEXT), wxAUI_ORIENTATION_MASK = (wxAUI_TB_VERTICAL | wxAUI_TB_HORIZONTAL), wxAUI_TB_DEFAULT_STYLE = 0 @@ -282,6 +283,11 @@ public: wxWindow* wnd, const wxRect& rect) = 0; + virtual void DrawPlainBackground( + wxDC& dc, + wxWindow* wnd, + const wxRect& rect) = 0; + virtual void DrawLabel( wxDC& dc, wxWindow* wnd, @@ -363,6 +369,10 @@ public: wxWindow* wnd, const wxRect& rect); + virtual void DrawPlainBackground(wxDC& dc, + wxWindow* wnd, + const wxRect& rect); + virtual void DrawLabel( wxDC& dc, wxWindow* wnd, diff --git a/interface/wx/aui/auibar.h b/interface/wx/aui/auibar.h index 513c67f582..05220e4798 100644 --- a/interface/wx/aui/auibar.h +++ b/interface/wx/aui/auibar.h @@ -57,6 +57,14 @@ enum wxAuiToolBarStyle */ wxAUI_TB_HORIZONTAL = 1 << 7, + + /** + Draw a plain background (based on parent) instead of the default gradient background. + + @since 2.9.5 + */ + wxAUI_TB_PLAIN_BACKGROUND = 1 << 8, + /** Shows the text alongside the icons, not vertically stacked. */ @@ -406,6 +414,11 @@ public: wxWindow* wnd, const wxRect& rect) = 0; + virtual void DrawPlainBackground( + wxDC& dc, + wxWindow* wnd, + const wxRect& rect) = 0; + virtual void DrawLabel( wxDC& dc, wxWindow* wnd, @@ -493,6 +506,10 @@ public: wxWindow* wnd, const wxRect& rect); + virtual void DrawPlainBackground(wxDC& dc, + wxWindow* wnd, + const wxRect& rect); + virtual void DrawLabel( wxDC& dc, wxWindow* wnd, @@ -573,6 +590,9 @@ public: @style{wxAUI_TB_HORIZONTAL} analogous to wxAUI_TB_VERTICAL, but forces the toolbar to be horizontal + @style{wxAUI_TB_PLAIN_BACKGROUND} + Draw a plain background (based on parent) instead of the + default gradient background. @style{wxAUI_TB_HORZ_TEXT} Equivalent to wxAUI_TB_HORZ_LAYOUT | wxAUI_TB_TEXT @style{wxAUI_TB_DEFAULT_STYLE} diff --git a/src/aui/auibar.cpp b/src/aui/auibar.cpp index d00706115b..77fbd74301 100644 --- a/src/aui/auibar.cpp +++ b/src/aui/auibar.cpp @@ -214,6 +214,19 @@ void wxAuiDefaultToolBarArt::DrawBackground( dc.GradientFillLinear(rect, startColour, endColour, wxSOUTH); } +void wxAuiDefaultToolBarArt::DrawPlainBackground(wxDC& dc, + wxWindow* WXUNUSED(wnd), + const wxRect& _rect) +{ + wxRect rect = _rect; + rect.height++; + + dc.SetBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)); + + dc.DrawRectangle(rect.GetX() - 1, rect.GetY() - 1, + rect.GetWidth() + 2, rect.GetHeight() + 1); +} + void wxAuiDefaultToolBarArt::DrawLabel( wxDC& dc, wxWindow* WXUNUSED(wnd), @@ -2367,8 +2380,10 @@ void wxAuiToolBar::OnPaint(wxPaintEvent& WXUNUSED(evt)) bool horizontal = m_orientation == wxHORIZONTAL; - - m_art->DrawBackground(dc, this, cli_rect); + if (m_windowStyle & wxAUI_TB_PLAIN_BACKGROUND) + m_art->DrawPlainBackground(dc, this, cli_rect); + else + m_art->DrawBackground(dc, this, cli_rect); int gripperSize = m_art->GetElementSize(wxAUI_TBART_GRIPPER_SIZE); int dropdown_size = m_art->GetElementSize(wxAUI_TBART_OVERFLOW_SIZE); -- 2.45.2