unsigned max_w = 0;
unsigned total_h = 0;
- for(unsigned i=0; (i<n && i<items.size()); ++i)
+ for(unsigned i=0; i<items.size(); ++i)
{
items[i]->autosize();
const Geometry &igeom = items[i]->get_geometry();
max_w = max(max_w, igeom.w);
- total_h += igeom.h;
+ if(i<n)
+ total_h += igeom.h;
}
- if(items.size()<n)
+ if(!items.empty() && items.size()<n)
total_h = total_h*n/items.size();
geom.w = max(geom.w, max_w+margin.left+margin.right);
}
-List::Loader::Loader(List &l):
- Widget::Loader(l)
-{
- add("item", &Loader::item);
-}
-
-
void List::Item::autosize()
{
Widget::autosize();
}
+List::Loader::Loader(List &l):
+ DataFile::DerivedObjectLoader<List, Widget::Loader>(l)
+{
+ add("item", &Loader::item);
+}
+
void List::Loader::item(const string &v)
{
- dynamic_cast<BasicListData<string> &>(*dynamic_cast<List &>(obj).data).append(v);
+ dynamic_cast<BasicListData<string> &>(*obj.data).append(v);
}
} // namespace GLtk