I agree with tito that it should not be managed by add_widget, but should be dynamic and settable by the user. The way it's implemented now, makes it very flexible, but also very easy for the user to auto-link them.

I actually had in mind to do what tito suggested, but forgot to do it. I added it now. The way it works now is:

* If the user doesn't do anything, there is no focus order and nothing is linked.
* The user can link instances by setting focus_next/previous directly, or by using the link_focus function.
* Finally, the user can call auto-populate which will walk the tree and link all the focusable widgets. However, there's a overwrite parameter, which if False, will leave already set link unchanged.

So, instead of focus_index, we use the focus_next/previous to create the focus order, but the user can set it like they wish, and or autopopulate so that it works out of the box for focus aware widgets.

Hopefully this is the best of both worlds.