From: Vadim Zeitlin Date: Mon, 2 Jul 2012 15:03:00 +0000 (+0000) Subject: Set string in wxEVT_COMMAND_COMBOBOX_SELECTED event in wxOSX/Cocoa. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/2de58153dbd5684d9ac0d2d72c7ceaceeec2c1ea Set string in wxEVT_COMMAND_COMBOBOX_SELECTED event in wxOSX/Cocoa. Pass the selected string and not only its index in the event generated when combobox selection changes in wxOSX/Cocoa. Closes #14383. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71941 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/widgets/combobox.cpp b/samples/widgets/combobox.cpp index f5ef0d5127..a36f3a0085 100644 --- a/samples/widgets/combobox.cpp +++ b/samples/widgets/combobox.cpp @@ -672,6 +672,12 @@ void ComboboxWidgetsPage::OnComboBox(wxCommandEvent& event) wxLogMessage(wxT("Combobox item %ld selected"), sel); wxLogMessage(wxT("Combobox GetValue(): %s"), m_combobox->GetValue().c_str() ); + + if ( event.GetString() != m_combobox->GetValue() ) + { + wxLogMessage("ERROR: Event has different string \"%s\"", + event.GetString()); + } } void ComboboxWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event)) diff --git a/src/osx/cocoa/combobox.mm b/src/osx/cocoa/combobox.mm index 379027674c..f0d4ea6677 100644 --- a/src/osx/cocoa/combobox.mm +++ b/src/osx/cocoa/combobox.mm @@ -76,11 +76,14 @@ wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self ); if ( impl && impl->ShouldSendEvents()) { - wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer(); + wxComboBox* wxpeer = static_cast(impl->GetWXPeer()); if ( wxpeer ) { + const int sel = wxpeer->GetSelection(); + wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, wxpeer->GetId()); event.SetEventObject( wxpeer ); - event.SetInt( static_cast(wxpeer)->GetSelection() ); + event.SetInt( sel ); + event.SetString( wxpeer->GetString(sel) ); // For some reason, wxComboBox::GetValue will not return the newly selected item // while we're inside this callback, so use AddPendingEvent to make sure // GetValue() returns the right value.