+ if (listbox->HasFlag(wxLB_MULTIPLE) || listbox->HasFlag(wxLB_EXTENDED))
+ {
+ wxArrayInt selections;
+ listbox->GetSelections( selections );
+
+ if (selections.GetCount() == 0)
+ {
+ // indicate that this is a deselection
+ event.SetExtraLong( 0 );
+ event.SetInt( -1 );
+
+ listbox->GetEventHandler()->ProcessEvent( event );
+
+ return;
+ }
+ else
+ {
+ // indicate that this is a selection
+ event.SetExtraLong( 1 );
+ event.SetInt( selections[0] );
+
+ listbox->GetEventHandler()->ProcessEvent( event );
+ }
+ }
+ else
+ {
+ int index = listbox->GetSelection();
+ if (index == wxNOT_FOUND)
+ {
+ // indicate that this is a deselection
+ event.SetExtraLong( 0 );
+ event.SetInt( -1 );
+
+ listbox->GetEventHandler()->ProcessEvent( event );
+
+ return;
+ }
+ else
+ {
+ GtkTreeEntry* entry = listbox->GtkGetEntry( index );