+ clb->Check( sel, !clb->IsChecked(sel) );
+
+ wxCommandEvent new_event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, listbox->GetId() );
+ new_event.SetEventObject( listbox );
+ new_event.SetInt( sel );
+ ret = listbox->GetEventHandler()->ProcessEvent( new_event );
+ }
+#endif // wxUSE_CHECKLISTBOX
+
+ // Check or uncheck item with SPACE
+ if ((gdk_event->keyval == ' ') && (!ret) &&
+ (((listbox->GetWindowStyleFlag() & wxLB_MULTIPLE) != 0) ||
+ ((listbox->GetWindowStyleFlag() & wxLB_EXTENDED) != 0)) )
+ {
+ int sel = listbox->GtkGetIndex( widget );
+
+ if (sel != -1)
+ {
+ ret = TRUE;
+
+ if (listbox->IsSelected( sel ))
+ gtk_list_unselect_item( listbox->m_list, sel );
+ else
+ gtk_list_select_item( listbox->m_list, sel );
+
+ wxCommandEvent new_event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
+ new_event.SetEventObject( listbox );
+ wxArrayInt aSelections;
+ int n, count = listbox->GetSelections(aSelections);
+ if ( count > 0 )
+ {
+ n = aSelections[0];
+ if ( listbox->HasClientObjectData() )
+ new_event.SetClientObject( listbox->GetClientObject(n) );
+ else if ( listbox->HasClientUntypedData() )
+ new_event.SetClientData( listbox->GetClientData(n) );
+ new_event.SetString( listbox->GetString(n) );
+ }
+ else
+ {
+ n = -1;
+ }
+ new_event.SetInt(n);
+ listbox->GetEventHandler()->ProcessEvent( new_event );
+ }
+ }
+
+ if (ret)
+ {
+ g_signal_stop_emission_by_name (widget, "key_press_event");
+ return TRUE;
+ }