]> git.tdb.fi Git - libs/gltk.git/blobdiff - examples/widgetdemo/widgetdemo.cpp
Rework how widget ownership works in Container
[libs/gltk.git] / examples / widgetdemo / widgetdemo.cpp
index b1482e72ae93f10c9652f5cadacdc954e6afbaae..1332ee1ffee363edc1e2597180728666a690f48c 100644 (file)
@@ -25,11 +25,11 @@ WidgetDemo::WidgetDemo(int, char **):
        root.add(selector);
        root_layout.set_expand(selector, false, true);
 
-       add_demo("Button", new ButtonDemo);
-       add_demo("Dialog", new DialogDemo);
-       add_demo("Dropdown", new DropdownDemo);
-       add_demo("Entry", new EntryDemo);
-       add_demo("Toggle", new ToggleDemo);
+       add_demo<ButtonDemo>("Button");
+       add_demo<DialogDemo>("Dialog");
+       add_demo<DropdownDemo>("Dropdown");
+       add_demo<EntryDemo>("Entry");
+       add_demo<ToggleDemo>("Toggle");
 
        view.set_content(&root);
 }
@@ -46,14 +46,15 @@ void WidgetDemo::tick()
        view.render();
 }
 
-void WidgetDemo::add_demo(const string &title, GLtk::Panel *demo)
+template<typename T>
+void WidgetDemo::add_demo(const string &title)
 {
        GLtk::Layout &root_layout = root.get_or_create_layout();
 
-       demo->set_visible(false);
-       root.add(*demo);
-       root_layout.add_constraint(*demo, GLtk::Layout::RIGHT_OF, selector);
-       root_layout.set_expand(*demo, true, true);
+       T &demo = root.add_new<T>();
+       demo.set_visible(false);
+       root_layout.add_constraint(demo, GLtk::Layout::RIGHT_OF, selector);
+       root_layout.set_expand(demo, true, true);
 
-       selector.add_demo(title, demo);
+       selector.add_demo(title, &demo);
 }