X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4f22cf8ddb6d4c75eee97d1320ba20f7c82753c8..24178e4a14a3d10e5f389ce7d8eb35f6636df001:/src/gtk1/listbox.cpp?ds=sidebyside diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 630925e135..32cf66671e 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -18,6 +18,13 @@ #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" + //------------------------------------------------------------------------- // conditional compilation //------------------------------------------------------------------------- @@ -65,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; @@ -232,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 ); @@ -299,26 +323,28 @@ 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 ); +#if wxUSE_DRAG_AND_DROP #ifndef NEW_GTK_DND_CODE if (m_dropTarget) m_dropTarget->RegisterWidget( list_item ); #endif +#endif } void wxListBox::Append( const wxString &item ) @@ -414,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 ); @@ -647,6 +673,7 @@ int wxListBox::GetIndex( GtkWidget *item ) const return -1; } +#if wxUSE_DRAG_AND_DROP void wxListBox::SetDropTarget( wxDropTarget *dropTarget ) { wxCHECK_RET( m_list != NULL, "invalid listbox" ); @@ -677,6 +704,7 @@ void wxListBox::SetDropTarget( wxDropTarget *dropTarget ) } #endif } +#endif GtkWidget *wxListBox::GetConnectWidget() {