]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/combobox.mm
Don't call wxSafeYield() from wxGenericListCtrl::EditLabel().
[wxWidgets.git] / src / osx / cocoa / combobox.mm
index 69342bf7d1ce6657fa89fbbb1e3a4af7aebe9eee..f0d4ea667756b03182751eb3101524f955010859 100644 (file)
@@ -14,6 +14,7 @@
 #if wxUSE_COMBOBOX
 
 #include "wx/combobox.h"
+#include "wx/evtloop.h"
 
 #ifndef WX_PRECOMP
     #include "wx/menu.h"
     wxWidgetCocoaImpl* impl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self );
     if ( impl && impl->ShouldSendEvents())
     {
-        wxWindow* wxpeer = (wxWindow*) impl->GetWXPeer();
+        wxComboBox* wxpeer = static_cast<wxComboBox*>(impl->GetWXPeer());
         if ( wxpeer ) {
+            const int sel = wxpeer->GetSelection();
+
             wxCommandEvent event(wxEVT_COMMAND_COMBOBOX_SELECTED, wxpeer->GetId());
             event.SetEventObject( wxpeer );
-            event.SetInt( static_cast<wxComboBox*>(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.
+            wxEventLoop* const loop = (wxEventLoop*) wxEventLoopBase::GetActive();
+            if ( loop )
+                loop->OSXUseLowLevelWakeup(true);
+
             wxpeer->GetEventHandler()->AddPendingEvent( event );
+
+            if ( loop )
+                loop->OSXUseLowLevelWakeup(false);
         }
     }
 }