+ throw hierarchy_error("widget not in panel");
+}
+
+Widget *Panel::get_final_input_focus() const
+{
+ if(Panel *panel = dynamic_cast<Panel *>(input_focus))
+ {
+ Widget *focus = panel->get_final_input_focus();
+ if(focus)
+ return focus;
+ }
+ return input_focus;
+}
+
+void Panel::render_special(const Part &part) const
+{
+ if(part.get_name()=="children")
+ {
+ for(list<Container::Child *>::const_iterator i=children.begin(); i!=children.end(); ++i)
+ if((*i)->widget->is_visible())
+ (*i)->widget->render();
+ }