]> git.tdb.fi Git - libs/gltk.git/blobdiff - source/list.cpp
Avoid autosizing widgets with no style
[libs/gltk.git] / source / list.cpp
index 378bf707c1a7d702f2192d50b0da8cd2ea70d9bc..0faf151456efd9703d605b8de5e9bb26c58c9c58 100644 (file)
@@ -72,7 +72,7 @@ void List::autosize_rows(unsigned 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);
@@ -310,13 +310,6 @@ void List::DataObserver::refresh_strings()
 }
 
 
-List::Loader::Loader(List &l):
-       Widget::Loader(l)
-{
-       add("item", &Loader::item);
-}
-
-
 void List::Item::autosize()
 {
        Widget::autosize();
@@ -368,9 +361,15 @@ void List::BasicItem::on_style_change()
 }
 
 
+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