]> git.saurik.com Git - wxWidgets.git/commitdiff
Set colours and fonts for all elements of the generic wxSearchCtrl.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Aug 2011 12:13:23 +0000 (12:13 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 27 Aug 2011 12:13:23 +0000 (12:13 +0000)
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
include/wx/srchctrl.h
src/generic/srchctlg.cpp

index 202abb9d5b01973dfa69b66460aece426796979c..0d1fc5b539282de3e884c6635ffc9c33cd14998b 100644 (file)
@@ -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
index 74a60c303dab32b94c2f985cf545231493d58435..2cdccbd3b5280d08b37eed61b037c4ebeded5871 100644 (file)
     // 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<wxControl>,
+        : public wxCompositeWindow< wxNavigationEnabled<wxControl> >,
           public wxTextCtrlIface
     {
     };
index d0efcd17b308f97a2ed004eed13b3192be5900c0..8efca10640c05e1c7f5ecb7e8a5b4559c4a84bdf 100644 (file)
@@ -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