void List::set_selected_index(int i)
{
- if(i>static_cast<int>(data->size()))
+ if(i>=static_cast<int>(data->size()))
throw out_of_range("List::set_selected_index");
if(sel_index>=0)
list.data->signal_item_added.connect(sigc::mem_fun(this, &DataObserver::item_added));
list.data->signal_item_removed.connect(sigc::mem_fun(this, &DataObserver::item_removed));
list.data->signal_cleared.connect(sigc::mem_fun(this, &DataObserver::cleared));
- list.data->signal_refresh_strings.connect(sigc::mem_fun(this, &DataObserver::refresh_strings));
+ list.data->signal_refresh_item.connect(sigc::mem_fun(this, &DataObserver::refresh_item));
}
void List::DataObserver::item_added(unsigned i)
list.items_changed();
}
-void List::DataObserver::refresh_strings()
+void List::DataObserver::refresh_item(unsigned i)
{
+ delete list.items[i];
+ list.items[i] = list.create_item(i);
list.items_changed();
}