if(i==children.end())
throw hierarchy_error("widget not in container");
+ if(&wdg==saved_input_focus)
+ saved_input_focus = nullptr;
wdg.set_parent(nullptr);
delete *i;
children.erase(i);
child.set_geometry(determine_child_geometry(child, part));
}
-list<Widget *> Container::get_children() const
+vector<Widget *> Container::get_children() const
{
- list<Widget *> result;
+ vector<Widget *> result;
for(const Child *c: children)
result.push_back(c->widget);
return result;
if(i==children.end())
throw hierarchy_error("widget not in container");
- children.splice(children.end(), children, i);
+ Child *c = *i;
+ children.erase(i);
+ children.push_back(c);
}
void Container::set_pointer_focus(Widget *wdg, bool grab)
void Container::focus_in()
{
- if(saved_input_focus && saved_input_focus->get_parent()==this)
+ if(saved_input_focus)
set_input_focus(saved_input_focus);
Widget::focus_in();
}