diff --git a/interface/wx/srchctrl.h b/interface/wx/srchctrl.h index 29b9294c41..bcfce39c9f 100644 --- a/interface/wx/srchctrl.h +++ b/interface/wx/srchctrl.h @@ -44,7 +44,10 @@ just as you would with wxTextCtrl. @event{EVT_SEARCHCTRL_SEARCH_BTN(id, func)} Respond to a wxEVT_SEARCHCTRL_SEARCH_BTN event, generated when the - search button is clicked. Note that this does not initiate a search. + search button is clicked. Note that this does not initiate a search on + its own, you need to perform the appropriate action in your event + handler. You may use @code event.GetString() @endcode to retrieve the + string to search for in the event handler code. @event{EVT_SEARCHCTRL_CANCEL_BTN(id, func)} Respond to a wxEVT_SEARCHCTRL_CANCEL_BTN event, generated when the cancel button is clicked. diff --git a/samples/widgets/searchctrl.cpp b/samples/widgets/searchctrl.cpp index 3c5bb3956a..4031dbd51f 100644 --- a/samples/widgets/searchctrl.cpp +++ b/samples/widgets/searchctrl.cpp @@ -84,6 +84,8 @@ protected: void OnToggleCancelButton(wxCommandEvent&); void OnToggleSearchMenu(wxCommandEvent&); + void OnSearch(wxCommandEvent& event); + wxMenu* CreateTestMenu(); // (re)create the control @@ -111,6 +113,8 @@ BEGIN_EVENT_TABLE(SearchCtrlWidgetsPage, WidgetsPage) EVT_CHECKBOX(ID_SEARCH_CB, SearchCtrlWidgetsPage::OnToggleSearchButton) EVT_CHECKBOX(ID_CANCEL_CB, SearchCtrlWidgetsPage::OnToggleCancelButton) EVT_CHECKBOX(ID_MENU_CB, SearchCtrlWidgetsPage::OnToggleSearchMenu) + + EVT_SEARCHCTRL_SEARCH_BTN(wxID_ANY, SearchCtrlWidgetsPage::OnSearch) END_EVENT_TABLE() // ============================================================================ @@ -222,5 +226,9 @@ void SearchCtrlWidgetsPage::OnToggleSearchMenu(wxCommandEvent&) m_srchCtrl->SetMenu(NULL); } +void SearchCtrlWidgetsPage::OnSearch(wxCommandEvent& event) +{ + wxLogMessage("Search button: search for \"%s\".", event.GetString()); +} #endif // wxUSE_SEARCHCTRL diff --git a/src/generic/srchctlg.cpp b/src/generic/srchctlg.cpp index 494ae1537f..ce7d03c2a3 100644 --- a/src/generic/srchctlg.cpp +++ b/src/generic/srchctlg.cpp @@ -242,6 +242,14 @@ protected: wxCommandEvent event(m_eventType, m_search->GetId()); event.SetEventObject(m_search); + if ( m_eventType == wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN ) + { + // it's convenient to have the string to search for directly in the + // event instead of having to retrieve it from the control in the + // event handler code later, so provide it here + event.SetString(m_search->GetValue()); + } + GetEventHandler()->ProcessEvent(event); m_search->SetFocus(); diff --git a/src/osx/srchctrl_osx.cpp b/src/osx/srchctrl_osx.cpp index 7881f00e34..0b5f068eb4 100644 --- a/src/osx/srchctrl_osx.cpp +++ b/src/osx/srchctrl_osx.cpp @@ -205,6 +205,11 @@ bool wxSearchCtrl::HandleSearchFieldSearchHit() { wxCommandEvent event(wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, m_windowId ); event.SetEventObject(this); + + // provide the string to search for directly in the event, this is more + // convenient than retrieving it from the control in event handler code + event.SetString(GetValue()); + return ProcessCommand(event); }