+
+ Widget::rebuild_special(part);
+}
+
+void List::render_special(const Part &part, GL::Renderer &renderer) const
+{
+ if(part.get_name()=="items")
+ {
+ for(unsigned i=first; (i<items.size() && items[i]->is_visible()); ++i)
+ items[i]->render(renderer);
+ }
+ else if(part.get_name()=="slider")
+ slider.render(renderer);
+}
+
+void List::button_press(int x, int y, unsigned btn)
+{
+ Container::button_press(x, y, btn);
+ if(click_focus && btn==1)
+ {
+ for(unsigned i=first; (i<items.size() && items[i]->is_visible()); ++i)
+ if(click_focus==items[i])
+ {
+ set_selected_index(i);
+ break;
+ }
+ }
+}
+
+void List::item_autosize_changed(Item *item)
+{
+ item->autosize();
+ signal_autosize_changed.emit();
+ rebuild();