]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/srchctlg.cpp
Use spacebar to activate items in generic wxDataViewCtrl too.
[wxWidgets.git] / src / generic / srchctlg.cpp
index e202bfe62e21d7486db5bb697a2deb6665c11239..8efca10640c05e1c7f5ecb7e8a5b4559c4a84bdf 100644 (file)
@@ -143,6 +143,13 @@ public:
 
     void SetBitmapLabel(const wxBitmap& label) { m_bmp = label; }
 
 
     void SetBitmapLabel(const wxBitmap& label) { m_bmp = label; }
 
+    // The buttons in wxSearchCtrl shouldn't accept focus from keyboard because
+    // this would interfere with the usual TAB processing: the user expects
+    // that pressing TAB in the search control should switch focus to the next
+    // control and not give it to the button inside the same control. Besides,
+    // the search button can be already activated by pressing "Enter" so there
+    // is really no reason for it to be able to get focus from keyboard.
+    virtual bool AcceptsFocusFromKeyboard() const { return false; }
 
 protected:
     wxSize DoGetBestSize() const
 
 protected:
     wxSize DoGetBestSize() const
@@ -289,12 +296,7 @@ bool wxSearchCtrl::Create(wxWindow *parent, wxWindowID id,
                                         m_cancelBitmap);
 
     SetForegroundColour( m_text->GetForegroundColour() );
                                         m_cancelBitmap);
 
     SetForegroundColour( m_text->GetForegroundColour() );
-    m_searchButton->SetForegroundColour( m_text->GetForegroundColour() );
-    m_cancelButton->SetForegroundColour( m_text->GetForegroundColour() );
-
     SetBackgroundColour( m_text->GetBackgroundColour() );
     SetBackgroundColour( m_text->GetBackgroundColour() );
-    m_searchButton->SetBackgroundColour( m_text->GetBackgroundColour() );
-    m_cancelButton->SetBackgroundColour( m_text->GetBackgroundColour() );
 
     RecalcBitmaps();
 
 
     RecalcBitmaps();
 
@@ -493,6 +495,14 @@ void wxSearchCtrl::LayoutControls(int x, int y, int width, int height)
                             y + ICON_OFFSET - 1, sizeCancel.x, 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
 // ---------
 
 // accessors
 // ---------
@@ -743,13 +753,25 @@ void wxSearchCtrl::SetEditable(bool editable)
 
 bool wxSearchCtrl::SetFont(const wxFont& font)
 {
 
 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();
     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
 }
 
 // search control generic only