+ // 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());
+ for(std::list<Part>::const_iterator i=stl.get_parts().begin(); i!=stl.get_parts().end(); ++i)
+ if(i->get_name()=="items")
+ {
+ const Sides &margin = i->get_margin();
+ h += margin.top+margin.bottom;
+ }
+ list.set_geometry(Geometry(0, -h, geom.w, h));
+}