X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ac57418f39e9671c18b99942180563146625d3ae..06ad863606966ceee6e7eea537f8d427f0d891a9:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 0cc5635fc5..32cf66671e 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -18,6 +18,10 @@ #include "wx/intl.h" #include "wx/checklst.h" +#if wxUSE_DRAG_AND_DROP +#include "wx/dnd.h" +#endif + #include "gdk/gdk.h" #include "gtk/gtk.h" @@ -68,8 +72,25 @@ gtk_listbox_button_press_callback( GtkWidget *widget, GdkEventButton *gdk_event, { wxCommandEvent event( wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, listbox->GetId() ); event.SetEventObject( listbox ); - event.SetInt( sel ); + + wxArrayInt aSelections; + int count = listbox->GetSelections(aSelections); + if ( count > 0 ) + { + event.m_commandInt = aSelections[0] ; + event.m_clientData = listbox->GetClientData( event.m_commandInt ); + wxString str(listbox->GetString(event.m_commandInt)); + if (str != "") event.m_commandString = copystring((char *)(const char *)str); + } + else + { + event.m_commandInt = -1 ; + event.m_commandString = copystring("") ; + } + listbox->GetEventHandler()->ProcessEvent( event ); + + if (event.m_commandString) delete[] event.m_commandString ; } return FALSE; @@ -235,18 +256,18 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, gtk_signal_connect( GTK_OBJECT(list_item), "deselect", GTK_SIGNAL_FUNC(gtk_listitem_select_callback), (gpointer)this ); + gtk_signal_connect( GTK_OBJECT(list_item), + "button_press_event", + (GtkSignalFunc)gtk_listbox_button_press_callback, + (gpointer) this ); + if (m_hasCheckBoxes) { gtk_signal_connect( GTK_OBJECT(list_item), - "button_press_event", - (GtkSignalFunc)gtk_listbox_button_press_callback, - (gpointer) this ); - } - - gtk_signal_connect( GTK_OBJECT(list_item), "key_press_event", (GtkSignalFunc)gtk_listbox_key_press_callback, (gpointer)this ); + } ConnectWidget( list_item ); @@ -302,24 +323,24 @@ void wxListBox::AppendCommon( const wxString &item ) if (m_widgetStyle) ApplyWidgetStyle(); + gtk_signal_connect( GTK_OBJECT(list_item), + "button_press_event", + (GtkSignalFunc)gtk_listbox_button_press_callback, + (gpointer) this ); + if (m_hasCheckBoxes) { - gtk_signal_connect( GTK_OBJECT(list_item), - "button_press_event", - (GtkSignalFunc)gtk_listbox_button_press_callback, - (gpointer) this ); - } - - gtk_signal_connect( GTK_OBJECT(list_item), + gtk_signal_connect( GTK_OBJECT(list_item), "key_press_event", (GtkSignalFunc)gtk_listbox_key_press_callback, - (gpointer)this ); + (gpointer)this ); + } gtk_widget_show( list_item ); ConnectWidget( list_item ); -#ifdef wxUSE_DRAG_AND_DROP +#if wxUSE_DRAG_AND_DROP #ifndef NEW_GTK_DND_CODE if (m_dropTarget) m_dropTarget->RegisterWidget( list_item ); #endif @@ -419,7 +440,7 @@ void wxListBox::Delete( int n ) wxCHECK_RET( child, "wrong listbox index" ); - GList *list = g_list_append( NULL, child->data ); + GList *list = g_list_append( (GList*) NULL, child->data ); gtk_list_remove_items( m_list, list ); g_list_free( list ); @@ -652,7 +673,7 @@ int wxListBox::GetIndex( GtkWidget *item ) const return -1; } -#ifdef wxUSE_DRAG_AND_DROP +#if wxUSE_DRAG_AND_DROP void wxListBox::SetDropTarget( wxDropTarget *dropTarget ) { wxCHECK_RET( m_list != NULL, "invalid listbox" );