void Dropdown::resize_list()
{
- // XXX This is a hack.
- unsigned n_items = list.get_n_items();
- const Style &stl = list.get_style();
- const GL::Font &font = *stl.get_font();
- unsigned h = min(max(n_items, 1U), 10U)*static_cast<unsigned>((font.get_ascent()-font.get_descent())*font.get_default_size());
- if(const Part *items_part = stl.get_part("items"))
- {
- const Sides &margin = items_part->get_margin();
- h += margin.top+margin.bottom;
- }
- list.set_geometry(Geometry(0, -h, geom.w, h));
+ list.autosize();
+ const Geometry &lgeom = list.get_geometry();
+ list.set_geometry(Geometry(0, -lgeom.h, max(geom.w, lgeom.w), lgeom.h));
}
void Dropdown::list_item_selected(unsigned index, const std::string &item)