X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2c755d9bbf4c786a03cf6193c630fc986a69f802..d67e4ac4c2c5e8719a4704cee2025901b778793f:/src/osx/cocoa/combobox.mm diff --git a/src/osx/cocoa/combobox.mm b/src/osx/cocoa/combobox.mm index 56ce4b05ca..a6c9e9b7c4 100644 --- a/src/osx/cocoa/combobox.mm +++ b/src/osx/cocoa/combobox.mm @@ -46,7 +46,7 @@ { wxUnusedVar(aNotification); wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self ); - if ( impl ) + if ( impl && impl->ShouldSendEvents() ) { wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer(); if ( wxpeer ) { @@ -62,7 +62,7 @@ { wxUnusedVar(notification); wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self ); - if ( impl ) + if ( impl && impl->ShouldSendEvents()) { wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer(); if ( wxpeer ) { @@ -94,7 +94,10 @@ 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]; + SendEvents(true); } int wxNSComboBoxControl::GetNumberOfItems() const @@ -109,12 +112,16 @@ void wxNSComboBoxControl::InsertItem(int pos, const wxString& item) void wxNSComboBoxControl::RemoveItem(int pos) { + SendEvents(false); [m_comboBox removeItemAtIndex:pos]; + SendEvents(true); } void wxNSComboBoxControl::Clear() { + SendEvents(false); [m_comboBox removeAllItems]; + SendEvents(true); } wxString wxNSComboBoxControl::GetStringAtIndex(int pos) const @@ -136,11 +143,13 @@ wxWidgetImplType* wxWidgetImpl::CreateComboBox( wxWindowMac* wxpeer, wxMenu* menu, const wxPoint& pos, const wxSize& size, - long WXUNUSED(style), + long style, long WXUNUSED(extraStyle)) { NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ; wxNSComboBox* v = [[wxNSComboBox alloc] initWithFrame:r]; + if (style & wxCB_READONLY) + [v setEditable:NO]; wxNSComboBoxControl* c = new wxNSComboBoxControl( wxpeer, v ); return c; }