+ wxListBox *list = wxDynamicCast( GetPeer() , wxListBox );
+ wxCHECK_RET( list != NULL , wxT("Listbox expected"));
+
+ if (list->HasMultipleSelection() && (message == kDataBrowserSelectionSetChanged) && (!list->MacGetBlockEvents()))
+ {
+ list->CalcAndSendEvent();
+ return;
+ }
+
+ if ((message == kDataBrowserSelectionSetChanged) && (!list->MacGetBlockEvents()))
+ {
+ wxCommandEvent event( wxEVT_COMMAND_LISTBOX_SELECTED, list->GetId() );
+
+ int sel = list->GetSelection();
+ if ((sel < 0) || (sel > list->GetCount())) // OS X can select an item below the last item (why?)
+ return;
+ event.SetEventObject( list );
+ if ( list->HasClientObjectData() )
+ event.SetClientObject( list->GetClientObject( sel ) );
+ else if ( list->HasClientUntypedData() )
+ event.SetClientData( list->GetClientData( sel ) );
+ event.SetString( list->GetString( sel ) );
+ event.SetInt( sel );
+ event.SetExtraLong( 1 );
+ list->HandleWindowEvent(event);
+ return;
+ }