- wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
- event.SetEventObject( listbox );
-
- 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->HandleWindowEvent( event );
-
- return;
- }
- else
- {
- // indicate that this is a selection
- event.SetExtraLong( 1 );
- event.SetInt( selections[0] );
-
- listbox->HandleWindowEvent( event );
- }
- }
- else
- {
- int index = listbox->GetSelection();
- if (index == wxNOT_FOUND)
- {
- // indicate that this is a deselection
- event.SetExtraLong( 0 );
- event.SetInt( -1 );
-
- listbox->HandleWindowEvent( event );
-
- return;
- }
- else
- {
- GtkTreeEntry* entry = listbox->GtkGetEntry( index );
-
- // indicate that this is a selection
- event.SetExtraLong( 1 );
-
- event.SetInt( index );
- event.SetString(wxConvUTF8.cMB2WX(gtk_tree_entry_get_label(entry)));
-
- if ( listbox->HasClientObjectData() )
- event.SetClientObject(
- (wxClientData*) gtk_tree_entry_get_userdata(entry)
- );
- else if ( listbox->HasClientUntypedData() )
- event.SetClientData( gtk_tree_entry_get_userdata(entry) );
-
- listbox->HandleWindowEvent( event );
-
- g_object_unref (entry);
- }
- }