]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/list.cpp
Fix a comparison that let an off-by-one error in
[libs/gltk.git] / source / list.cpp
index ec3f9942d458eece47a62f4eb2ee2b233c5d54b7..7227f0c59f6cd971ec330f6de266b84d8ecadc82 100644 (file)
@@ -121,7 +121,7 @@ void List::set_view_all()
 
 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)
@@ -275,7 +275,7 @@ List::DataObserver::DataObserver(List &l):
        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)
@@ -310,8 +310,10 @@ void List::DataObserver::cleared()
        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();
 }