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