Well, finally I figured it out.
I have rewritten the cefClient sample not to create the browser on startup, but I create it when a certain charater is pressed in the textBox. My goal is to keep the focus in the textBox even after the page is loaded.
One place the focus is set is in the CefBrowserHostImpl::LoadURL - this results in a call to the CefFocusHandler where I return 'true' to disallow setting the focus. So far so good, this is easily configurable and if the developer needs to set the focus when the page is loaded, this is the way how to achieve it.
The second place is CefWindowDelegateView::Init where params.activatable is set to ACTIVATABLE_YES. On Windows, this happens everytime. In Widget::Show() this results in calling native_widget_->Show() instead of native_widget_->ShowWithWindowState(ui::SHOW_STATE_INACTIVE) and thus the input focus is lost, without any way to control it. This is relevant to the
https://bitbucket.org/chromiumembedded/ ... abf90d2691 issue which fixes a different bug, but I think it has the side-effect i described...