Backport wxListBox::Insert() changes to 2_8.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@44468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2007-02-11 14:39:31 +00:00
parent 1bd50ac5be
commit d42677b8c8
2 changed files with 47 additions and 9 deletions

View File

@@ -45,11 +45,11 @@ public:
// all generic methods are in wxControlWithItems, except for the following
// ones which are not yet implemented by wxChoice/wxComboBox
void Insert(const wxString& item, unsigned int pos)
{ DoInsert(item, pos); }
{ /* return*/ wxControlWithItems::Insert(item,pos); }
void Insert(const wxString& item, unsigned int pos, void *clientData)
{ DoInsert(item, pos); SetClientData(pos, clientData); }
{ /* return*/ wxControlWithItems::Insert(item,pos,clientData); }
void Insert(const wxString& item, unsigned int pos, wxClientData *clientData)
{ DoInsert(item, pos); SetClientObject(pos, clientData); }
{ /* return*/ wxControlWithItems::Insert(item,pos,clientData); }
void InsertItems(unsigned int nItems, const wxString *items, unsigned int pos);
void InsertItems(const wxArrayString& items, unsigned int pos)

View File

@@ -552,12 +552,50 @@ void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos)
int wxListBox::DoAppend( const wxString& item )
{
// Call DoInsertItems
unsigned int nWhere = wxListBox::GetCount();
wxArrayString aItems;
aItems.Add(item);
wxListBox::DoInsertItems(aItems, nWhere);
return nWhere;
wxCHECK_MSG( m_treeview != NULL, -1, wxT("invalid listbox") );
InvalidateBestSize();
GtkTreeEntry* entry = gtk_tree_entry_new();
gtk_tree_entry_set_label( entry, wxGTK_CONV(item) );
gtk_tree_entry_set_destroy_func(entry,
(GtkTreeEntryDestroy)gtk_tree_entry_destroy_cb,
this);
GtkTreeIter itercur;
gtk_list_store_insert_before( m_liststore, &itercur, NULL );
#if wxUSE_CHECKLISTBOX
if (m_hasCheckBoxes)
{
gtk_list_store_set( m_liststore, &itercur,
0, FALSE, //FALSE == not toggled
1, entry, -1);
}
else
#endif
gtk_list_store_set(m_liststore, &itercur,
0, entry, -1);
g_object_unref (entry); //liststore always refs :)
GtkTreePath* path = gtk_tree_model_get_path(
GTK_TREE_MODEL(m_liststore),
&itercur);
gint* pIntPath = gtk_tree_path_get_indices(path);
if (pIntPath == NULL)
{
wxLogSysError(wxT("internal wxListBox error in insertion"));
return wxNOT_FOUND;
}
int index = pIntPath[0];
gtk_tree_path_free( path );
return index;
}
void wxListBox::DoSetItems( const wxArrayString& items,