From 63501404a59735a6946b5b45edf2b9287d081b0a Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Tue, 4 Feb 2014 16:59:13 +0000 Subject: [PATCH] Added support for wxEVT_COMBOBOX_DROPDOWN and wxEVT_COMBOBOX_CLOSEUP events to wxOSX/Cocoa. Backport of r75783. Closes #15762. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@75790 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 2 ++ interface/wx/combobox.h | 8 ++++---- src/osx/cocoa/combobox.mm | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 4 deletions(-) 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);