#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"
{
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;
(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 );
(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 );
if (m_dropTarget) m_dropTarget->RegisterWidget( list_item );
#endif
#endif
+
+ if (m_toolTip) m_toolTip->Create( list_item );
}
void wxListBox::Append( const wxString &item )
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 )
{
child = child->next;
}
}
+