- reposition_items();
-}
-
-void List::reposition_items()
-{
- if(!style)
- return;
-
- if(const Part *items_part = style->get_part("items"))
- {
- const Sides &margin = items_part->get_margin();
- unsigned w = geom.w-min(geom.w, margin.left+margin.right);
- unsigned y = geom.h-min(geom.h, margin.top);
- for(unsigned i=0; i<items.size(); ++i)
- {
- if(i<first || !y)
- items[i]->set_visible(false);
- else
- {
- Geometry igeom;
- items[i]->autosize(igeom);
- if(igeom.h+margin.bottom<=y)
- {
- items[i]->set_visible(true);
- y -= igeom.h;
- igeom.x = margin.left;
- igeom.y = y;
- igeom.w = w;
- items[i]->set_geometry(igeom);
- }
- else
- {
- items[i]->set_visible(false);
- y = 0;
- }
- }
- }
- }