X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flist.cpp;h=5d765008765c9ccbece8c28e77c9a62da5a4cecb;hb=9faf932be00ba7ec7ed8c81f1e7971dcfa2b2085;hp=9be88e52c9ce65acecdf98b550d78a5db9a672ee;hpb=7286d604956ddffcbfa2df6567de866f3d5df3a2;p=libs%2Fgltk.git diff --git a/source/list.cpp b/source/list.cpp index 9be88e5..5d76500 100644 --- a/source/list.cpp +++ b/source/list.cpp @@ -44,6 +44,7 @@ void List::init() first = 0; max_scroll = 0; view_size = 5; + items_part = 0; ignore_slider_change = false; dragging = false; drag_start_x = 0; @@ -349,6 +350,11 @@ bool List::navigate(Navigation nav) return true; } +void List::on_style_change() +{ + items_part = (style ? style->get_part("items") : 0); +} + void List::move_focus(Navigation nav, bool select) { if(nav==NAV_UP) @@ -386,15 +392,11 @@ void List::item_autosize_changed(Item *item) unsigned List::last_to_first(unsigned last) const { - if(!style) + if(!items_part) return last; - unsigned view_h = geom.h; - if(const Part *items_part = style->get_part("items")) - { - const Sides &margin = items_part->get_margin(); - view_h -= margin.top+margin.bottom; - } + const Sides &margin = items_part->get_margin(); + unsigned view_h = geom.h-min(geom.h, margin.top+margin.bottom); unsigned items_h = 0; for(unsigned i=last; i