X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flist.cpp;h=8c0d789188ab917221336d98f09efbc66bb561fe;hb=9b29612d1cde85fee9b3f011e86a5cabe5dbcce3;hp=73f427bff7fdf2dbadb84eaa4e67b55152e27d0d;hpb=c435423919a20a87d100e1ee4cd1fc6ce223040c;p=libs%2Fgltk.git diff --git a/source/list.cpp b/source/list.cpp index 73f427b..8c0d789 100644 --- a/source/list.cpp +++ b/source/list.cpp @@ -33,6 +33,11 @@ List::List(const Resources &r): update_style(); } +List::~List() +{ + delete slider; +} + void List::append(const string &v) { items.push_back(v); @@ -66,6 +71,21 @@ void List::clear() { items.clear(); sel_index=-1; + + recalculate_parameters(); +} + +void List::set_selected_index(int i) +{ + if(i<0) + sel_index=-1; + else if(i(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 @@ -93,7 +113,7 @@ void List::button_press(int x, int y, unsigned btn) y+=items_part->get_margin().top; unsigned i=(geom.h-1-y)/row_height; - if(i(value); + if(items.size()>n_visible) + first=items.size()-n_visible-static_cast(value); }