From 185ac7cbbb881b3edb44d0e594bc6be4991baaae Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Tue, 2 Jul 2013 16:29:49 +0000 Subject: [PATCH] preserve checkbox status in SetString() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/listbox.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index 27d7440ae2..5f1a0ed7a1 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -598,22 +598,20 @@ void wxListBox::DoSetItemClientData(unsigned int n, void* clientData) void wxListBox::SetString(unsigned int n, const wxString& label) { - wxCHECK_RET( IsValid(n), wxT("invalid index in wxListBox::SetString") ); wxCHECK_RET( m_treeview != NULL, wxT("invalid listbox") ); - GtkTreeEntry* entry = GTKGetEntry(n); - wxCHECK_RET( entry, wxT("wrong listbox index") ); + GtkTreeIter iter; + wxCHECK_RET(GTKGetIteratorFor(n, &iter), "invalid index"); + wxGtkObject entry(GetEntry(m_liststore, &iter, this)); // update the item itself gtk_tree_entry_set_label(entry, wxGTK_CONV(label)); - // and update the model which will refresh the tree too - GtkTreeIter iter; - wxCHECK_RET( GTKGetIteratorFor(n, &iter), wxT("failed to get iterator") ); - - // FIXME: this resets the checked status of a wxCheckListBox item - - GTKSetItem(iter, entry); + // signal row changed + GtkTreeModel* tree_model = GTK_TREE_MODEL(m_liststore); + GtkTreePath* path = gtk_tree_model_get_path(tree_model, &iter); + gtk_tree_model_row_changed(tree_model, path, &iter); + gtk_tree_path_free(path); } wxString wxListBox::GetString(unsigned int n) const -- 2.47.2