update_style();
}
+List::~List()
+{
+ delete slider;
+}
+
void List::append(const string &v)
{
items.push_back(v);
{
items.clear();
sel_index=-1;
+
+ recalculate_parameters();
+}
+
+void List::set_selected_index(int i)
+{
+ if(i<0)
+ sel_index=-1;
+ else if(i<static_cast<int>(items.size()))
+ {
+ sel_index=i;
+ signal_item_selected.emit(sel_index, items[sel_index]);
+ }
+ else
+ throw InvalidParameterValue("Index out of range");
}
const string &List::get_selected() const
y+=items_part->get_margin().top;
unsigned i=(geom.h-1-y)/row_height;
- if(i<n_visible)
+ if(i<n_visible && first+i<items.size())
{
sel_index=first+i;
Geometry pgeom=geom;
pgeom.h=row_height;
+ pgeom.w-=margin.left+margin.right;
for(unsigned i=0; (i<n_visible && first+i<items.size()); ++i)
{
void List::slider_value_changed(double value)
{
- first=items.size()-n_visible-static_cast<unsigned>(value);
+ if(items.size()>n_visible)
+ first=items.size()-n_visible-static_cast<unsigned>(value);
}