From 35368572bc8faa8efc09687f2ba25fd9e02b4281 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 27 Aug 2011 12:13:23 +0000 Subject: [PATCH] Set colours and fonts for all elements of the generic wxSearchCtrl. Derive generic wxSearchCtrl from wxCompositeWindow<> to ensure that calls to its Set{Fore,Back}groundColour() are propagated to all its children, otherwise they applied only to the composite control itself but not e.g. its text part. Also update the bitmaps when the background colour changes to ensure that it appears as transparent. Closes #13428. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/srchctlg.h | 4 ++++ include/wx/srchctrl.h | 3 ++- src/generic/srchctlg.cpp | 37 ++++++++++++++++++++++++----------- 3 files changed, 32 insertions(+), 12 deletions(-) diff --git a/include/wx/generic/srchctlg.h b/include/wx/generic/srchctlg.h index 202abb9d5b..0d1fc5b539 100644 --- a/include/wx/generic/srchctlg.h +++ b/include/wx/generic/srchctlg.h @@ -191,6 +191,7 @@ public: // wxWindow overrides virtual bool SetFont(const wxFont& font); + virtual bool SetBackgroundColour(const wxColour& colour); // search control generic only void SetSearchBitmap( const wxBitmap& bitmap ); @@ -235,6 +236,9 @@ protected: private: friend class wxSearchButton; + // Implement pure virtual function inherited from wxCompositeWindow. + virtual wxWindowList GetCompositeWindowParts() const; + #if wxUSE_MENUS void PopupSearchMenu(); #endif // wxUSE_MENUS diff --git a/include/wx/srchctrl.h b/include/wx/srchctrl.h index 74a60c303d..2cdccbd3b5 100644 --- a/include/wx/srchctrl.h +++ b/include/wx/srchctrl.h @@ -26,10 +26,11 @@ // no native version, use the generic one #define wxUSE_NATIVE_SEARCH_CONTROL 0 + #include "wx/compositewin.h" #include "wx/containr.h" class WXDLLIMPEXP_CORE wxSearchCtrlBaseBaseClass - : public wxNavigationEnabled, + : public wxCompositeWindow< wxNavigationEnabled >, public wxTextCtrlIface { }; diff --git a/src/generic/srchctlg.cpp b/src/generic/srchctlg.cpp index d0efcd17b3..8efca10640 100644 --- a/src/generic/srchctlg.cpp +++ b/src/generic/srchctlg.cpp @@ -296,12 +296,7 @@ bool wxSearchCtrl::Create(wxWindow *parent, wxWindowID id, m_cancelBitmap); SetForegroundColour( m_text->GetForegroundColour() ); - m_searchButton->SetForegroundColour( m_text->GetForegroundColour() ); - m_cancelButton->SetForegroundColour( m_text->GetForegroundColour() ); - SetBackgroundColour( m_text->GetBackgroundColour() ); - m_searchButton->SetBackgroundColour( m_text->GetBackgroundColour() ); - m_cancelButton->SetBackgroundColour( m_text->GetBackgroundColour() ); RecalcBitmaps(); @@ -500,6 +495,14 @@ void wxSearchCtrl::LayoutControls(int x, int y, int width, int height) y + ICON_OFFSET - 1, sizeCancel.x, height); } +wxWindowList wxSearchCtrl::GetCompositeWindowParts() const +{ + wxWindowList parts; + parts.push_back(m_text); + parts.push_back(m_searchButton); + parts.push_back(m_cancelButton); + return parts; +} // accessors // --------- @@ -750,13 +753,25 @@ void wxSearchCtrl::SetEditable(bool editable) bool wxSearchCtrl::SetFont(const wxFont& font) { - bool result = wxSearchCtrlBase::SetFont(font); - if ( result && m_text ) - { - result = m_text->SetFont(font); - } + if ( !wxSearchCtrlBase::SetFont(font) ) + return false; + + // Recreate the bitmaps as their size may have changed. RecalcBitmaps(); - return result; + + return true; +} + +bool wxSearchCtrl::SetBackgroundColour(const wxColour& colour) +{ + if ( !wxSearchCtrlBase::SetBackgroundColour(colour) ) + return false; + + // When the background changes, re-render the bitmaps so that the correct + // colour shows in their "transparent" area. + RecalcBitmaps(); + + return true; } // search control generic only -- 2.45.2