+ wxArrayString deletedLabels;
+ wxArrayPtrVoid deletedData;
+ wxArrayInt deletedChecks; // only for check list boxes
+
+ GList *child = g_list_nth( children, pos );
+ for ( n = 0; child != NULL; n++, child = child->next )
+ {
+ // save label
+ GtkBin *bin = GTK_BIN( child->data );
+ GtkLabel *label = GTK_LABEL( bin->child );
+
+ wxString str(GET_REAL_LABEL(label->label),*wxConvCurrent);
+ deletedLabels.Add(str);
+
+ // save data
+ void *clientData = NULL;
+ wxNode *node = NULL;
+
+ if ( n < (int)m_clientObjectList.GetCount() )
+ node = m_clientObjectList.Nth( n );
+
+ if ( node )
+ {
+ clientData = node->GetData();
+ m_clientObjectList.DeleteNode( node );
+ }
+
+ if ( !clientData )
+ {
+ if ( n < (int)m_clientDataList.GetCount() )
+ node = m_clientDataList.Nth( n );
+
+ if ( node )
+ {
+ clientData = node->GetData();
+ node = m_clientDataList.Nth( n );
+ }
+ }
+
+ deletedData.Add(clientData);
+
+#if wxUSE_CHECKLISTBOX
+ // save check state
+ if ( m_hasCheckBoxes )
+ {
+ deletedChecks.Add(((wxCheckListBox *)this)->IsChecked(pos + n));
+ }
+#endif // wxUSE_CHECKLISTBOX
+ }
+
+ int nDeletedCount = n;
+
+ gtk_list_clear_items( m_list, pos, length );
+
+ // now append the new items
+ for ( n = 0; n < nItems; n++ )