const Sides &margin = part.get_margin();
unsigned max_w = 0;
- unsigned total_h = 0;
+ unsigned max_h = 0;
for(unsigned i=0; i<items.size(); ++i)
{
Geometry igeom;
items[i]->autosize(igeom);
max_w = max(max_w, igeom.w);
- if(view_size==0 || i<view_size)
- total_h += igeom.h;
+ max_h = max(max_h, igeom.h);
}
- if(!items.empty() && items.size()<view_size)
- total_h = total_h*view_size/items.size();
+ unsigned total_h = max_h*(view_size==0 ? items.size() : view_size);
ageom.w = max(ageom.w, max_w+margin.left+margin.right);
ageom.h = max(ageom.h, total_h+margin.top+margin.bottom);
}
+void List::SimpleItem::on_style_change()
+{
+ if(!style || children.empty())
+ return;
+
+ Widget *child = children.front()->widget;
+ child->autosize();
+ if(const Part *part = style->get_part("children"))
+ {
+ const Sides &margin = part->get_margin();
+ child->set_position(margin.left, margin.bottom);
+ }
+}
+
+
void List::MultiColumnItem::check_widths(vector<unsigned> &widths) const
{
if(widths.size()<children.size())
add(label);
}
-void List::BasicItem::on_style_change()
-{
- if(!style)
- return;
-
- label.autosize();
- if(const Part *part = style->get_part("children"))
- {
- const Sides &margin = part->get_margin();
- label.set_position(margin.left, margin.bottom);
- }
-}
-
List::Loader::Loader(List &l):
DataFile::DerivedObjectLoader<List, Widget::Loader>(l)