diff --git a/docs/changes.txt b/docs/changes.txt index 0ab05c0ac3..415ba2a336 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -632,6 +632,8 @@ wxMSW: wxOSX: - Fix incorrect joystick detection in configure (Lauri Nurmi). +- Add support for wxEVT_COMBOBOX_DROPDOWN and wxEVT_COMBOBOX_CLOSEUP + events to wxOSX/Cocoa (Igor Korot). 3.0.0: (released 2013-11-11) diff --git a/interface/wx/combobox.h b/interface/wx/combobox.h index d3e75c84ab..a23358d2a8 100644 --- a/interface/wx/combobox.h +++ b/interface/wx/combobox.h @@ -60,14 +60,14 @@ @event{EVT_COMBOBOX_DROPDOWN(id, func)} Process a @c wxEVT_COMBOBOX_DROPDOWN event, which is generated when the list box part of the combo box is shown (drops down). - Notice that this event is currently only supported by wxMSW and - wxGTK with GTK+ 2.10 or later. + Notice that this event is only supported by wxMSW, wxGTK with GTK+ + 2.10 or later, and wxOSX/Cocoa. @event{EVT_COMBOBOX_CLOSEUP(id, func)} Process a @c wxEVT_COMBOBOX_CLOSEUP event, which is generated when the list box of the combo box disappears (closes up). This event is only generated for the same platforms as - @c wxEVT_COMBOBOX_DROPDOWN above. Also note that only wxMSW - supports adding or deleting items in this event. + @c wxEVT_COMBOBOX_DROPDOWN above. Also note that only wxMSW and + wxOSX/Cocoa support adding or deleting items in this event. @endEventTable @library{wxcore} diff --git a/src/osx/cocoa/combobox.mm b/src/osx/cocoa/combobox.mm index 112b37b43e..37e9c5d9fe 100644 --- a/src/osx/cocoa/combobox.mm +++ b/src/osx/cocoa/combobox.mm @@ -90,6 +90,38 @@ } } +- (void)comboBoxWillPopUp:(NSNotification *)notification +{ + wxUnusedVar(notification); + wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self ); + if( impl && impl->ShouldSendEvents() ) + { + wxComboBox* wxpeer = static_cast(impl->GetWXPeer()); + if( wxpeer ) + { + wxCommandEvent event(wxEVT_COMBOBOX_DROPDOWN, wxpeer->GetId()); + event.SetEventObject( wxpeer ); + wxpeer->GetEventHandler()->ProcessEvent( event ); + } + } +} + +- (void)comboBoxWillDismiss:(NSNotification *)notification +{ + wxUnusedVar(notification); + wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self ); + if( impl && impl->ShouldSendEvents() ) + { + wxComboBox* wxpeer = static_cast(impl->GetWXPeer()); + if( wxpeer ) + { + wxCommandEvent event(wxEVT_COMBOBOX_CLOSEUP, wxpeer->GetId()); + event.SetEventObject( wxpeer ); + wxpeer->GetEventHandler()->ProcessEvent( event ); + } + } +} + - (void)comboBoxSelectionDidChange:(NSNotification *)notification { wxUnusedVar(notification);