X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6fcbb63d0a6ca455f2c81cd0fe42c4bb93b2b21..2a29700ecf3d6862db16c5f5c9086a698a7ff247:/src/gtk1/listbox.cpp diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 58c4bf34d6..6d6208d779 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -17,6 +17,7 @@ #include "wx/utils.h" #include "wx/intl.h" #include "wx/checklst.h" +#include "wx/tooltip.h" #if wxUSE_DRAG_AND_DROP #include "wx/dnd.h" @@ -72,8 +73,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; @@ -244,10 +262,13 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id, (GtkSignalFunc)gtk_listbox_button_press_callback, (gpointer) this ); - gtk_signal_connect( GTK_OBJECT(list_item), + if (m_hasCheckBoxes) + { + gtk_signal_connect( GTK_OBJECT(list_item), "key_press_event", (GtkSignalFunc)gtk_listbox_key_press_callback, (gpointer)this ); + } ConnectWidget( list_item ); @@ -308,10 +329,13 @@ void wxListBox::AppendCommon( const wxString &item ) (GtkSignalFunc)gtk_listbox_button_press_callback, (gpointer) this ); - gtk_signal_connect( GTK_OBJECT(list_item), + if (m_hasCheckBoxes) + { + 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 ); @@ -322,6 +346,8 @@ void wxListBox::AppendCommon( const wxString &item ) if (m_dropTarget) m_dropTarget->RegisterWidget( list_item ); #endif #endif + + if (m_toolTip) m_toolTip->Create( list_item ); } void wxListBox::Append( const wxString &item ) @@ -650,6 +676,29 @@ int wxListBox::GetIndex( GtkWidget *item ) const return -1; } +void wxListBox::SetToolTip( const wxString &tip ) +{ + SetToolTip( new wxToolTip( tip ) ); +} + +void wxListBox::SetToolTip( wxToolTip *tip ) +{ + if (m_toolTip) delete m_toolTip; + + m_toolTip = tip; + + if (!tip) return; + + m_toolTip->Create( GTK_WIDGET(m_list) ); /* this has no effect */ + + GList *child = m_list->children; + while (child) + { + m_toolTip->Create( GTK_WIDGET( child->data ) ); + child = child->next; + } +} + #if wxUSE_DRAG_AND_DROP void wxListBox::SetDropTarget( wxDropTarget *dropTarget ) { @@ -727,3 +776,4 @@ void wxListBox::ApplyWidgetStyle() child = child->next; } } +