X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5bd77105934934cf38145e036d7072c2ca0b0456..b895954d3f7e37a42292e9c610262c1330eb4cd7:/src/osx/cocoa/combobox.mm diff --git a/src/osx/cocoa/combobox.mm b/src/osx/cocoa/combobox.mm index 16876eef2e..d98f0a331e 100644 --- a/src/osx/cocoa/combobox.mm +++ b/src/osx/cocoa/combobox.mm @@ -78,7 +78,8 @@ } @end -wxNSComboBoxControl::wxNSComboBoxControl( wxWindow *wxPeer, WXWidget w ) : wxNSTextFieldControl(wxPeer, w) +wxNSComboBoxControl::wxNSComboBoxControl( wxComboBox *wxPeer, WXWidget w ) + : wxNSTextFieldControl(wxPeer, wxPeer, w) { m_comboBox = (NSComboBox*)w; } @@ -94,9 +95,21 @@ int wxNSComboBoxControl::GetSelectedItem() const void wxNSComboBoxControl::SetSelectedItem(int item) { - wxASSERT_MSG(item >= 0 && item < [m_comboBox numberOfItems], "Inavlid item index."); SendEvents(false); - [m_comboBox selectItemAtIndex: item]; + + if ( item != wxNOT_FOUND ) + { + wxASSERT_MSG( item >= 0 && item < [m_comboBox numberOfItems], + "Inavlid item index." ); + [m_comboBox selectItemAtIndex: item]; + } + else // remove current selection (if we have any) + { + const int sel = GetSelectedItem(); + if ( sel != wxNOT_FOUND ) + [m_comboBox deselectItemAtIndex:sel]; + } + SendEvents(true); } @@ -137,7 +150,7 @@ int wxNSComboBoxControl::FindString(const wxString& text) const return result; } -wxWidgetImplType* wxWidgetImpl::CreateComboBox( wxWindowMac* wxpeer, +wxWidgetImplType* wxWidgetImpl::CreateComboBox( wxComboBox* wxpeer, wxWindowMac* WXUNUSED(parent), wxWindowID WXUNUSED(id), wxMenu* menu, @@ -183,4 +196,4 @@ wxSize wxComboBox::DoGetBestSize() const return wxSize( lbWidth, lbHeight ); } -#endif // wxUSE_COMBOBOX \ No newline at end of file +#endif // wxUSE_COMBOBOX