From: Robert Roebling Date: Thu, 22 May 2008 21:47:20 +0000 (+0000) Subject: Forgot client data X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/415ab72e8d307dfff9cac113af9b3b9cf46c6719 Forgot client data git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index 7fbd69425f..66669dfdc2 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -112,6 +112,17 @@ gtk_listbox_row_activated_callback(GtkTreeView * WXUNUSED(treeview), // "changed" //----------------------------------------------------------------------------- +static void SendEvent( wxCommandEvent &event, wxListBox *listbox, int item ) +{ + event.SetInt( item ); + event.SetString( listbox->GetString( item ) ); + if ( listbox->HasClientObjectData() ) + event.SetClientObject( listbox->GetClientObject(item) ); + else if ( listbox->HasClientUntypedData() ) + event.SetClientData( listbox->GetClientData(item) ); + listbox->HandleWindowEvent( event ); +} + extern "C" { static void gtk_listitem_changed_callback(GtkTreeSelection * WXUNUSED(selection), @@ -155,28 +166,21 @@ gtk_listitem_changed_callback(GtkTreeSelection * WXUNUSED(selection), { // indicate that this is a deselection event.SetExtraLong( 0 ); - - // take first item in old selection - event.SetInt( listbox->m_oldSelection[0] ); - event.SetString( listbox->GetString( listbox->m_oldSelection[0] ) ); - + int item = listbox->m_oldSelection[0]; listbox->m_oldSelection = selections; - - listbox->HandleWindowEvent( event ); - + SendEvent( event, listbox, item ); return; } + int item; // Now test if any new item is selected bool any_new_selected = false; size_t idx; for (idx = 0; idx < selections.GetCount(); idx++) { - int item = selections[idx]; + item = selections[idx]; if (listbox->m_oldSelection.Index(item) == wxNOT_FOUND) { - event.SetInt( item ); - event.SetString( listbox->GetString( item ) ); any_new_selected = true; break; } @@ -186,9 +190,8 @@ gtk_listitem_changed_callback(GtkTreeSelection * WXUNUSED(selection), { // indicate that this is a selection event.SetExtraLong( 1 ); - listbox->m_oldSelection = selections; - listbox->HandleWindowEvent( event ); + SendEvent( event, listbox, item ); return; } @@ -196,11 +199,9 @@ gtk_listitem_changed_callback(GtkTreeSelection * WXUNUSED(selection), bool any_new_deselected = false; for (idx = 0; idx < listbox->m_oldSelection.GetCount(); idx++) { - int item = listbox->m_oldSelection[idx]; + item = listbox->m_oldSelection[idx]; if (selections.Index(item) == wxNOT_FOUND) { - event.SetInt( item ); - event.SetString( listbox->GetString( item ) ); any_new_deselected = true; break; } @@ -210,9 +211,8 @@ gtk_listitem_changed_callback(GtkTreeSelection * WXUNUSED(selection), { // indicate that this is a selection event.SetExtraLong( 0 ); - listbox->m_oldSelection = selections; - listbox->HandleWindowEvent( event ); + SendEvent( event, listbox, item ); return; }