Quick Question: why isn’t KeyboardFocusTraverser::getDefaultComponent used in all Juce TopLevelWindow-derived classes to determine which control to give initial focus, and on first show just make that control focused?
As is now, everyone that wants their dialogs to be in a usable keyboard-traversible state from the get go need to mess around with e.g. timers to explicitly set the initial focus once the dialog is visible, or maybe first show the dialog async, then set the focus, then continue using it (modal or not). This change would make it a lot easier for everyone in that regard.
Someone might argue that they do not want their dialogs to have a control focused initially, but then again as soon as the user clicks literally anywhere in the dialog (which by default is the only way to start interacting with it at all), the initial focus does get set. And probably already via KeyboardFocusTraverser::getDefaultComponent, right?