shouldn't this be moved to add/remove_widget? That way you wouldn't have to iterate over the children list and only set/update the focus_next attribute?