https://bugs.kde.org/show_bug.cgi?id=381793

David Faure <fa...@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REPORTED                    |ASSIGNED
           Assignee|kdelibs-b...@kde.org        |fa...@kde.org
     Ever confirmed|0                           |1

--- Comment #12 from David Faure <fa...@kde.org> ---
The deleted focus-widget had a focus proxy,
QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget
But QApplicationPrivate::focus_widget is the WebEngineView, not its focus
proxy.

Due to that, QWidget::hasFocus() [which follows to the focus proxy] on both
widgets is false, so QWidget::clearFocus() doesn't call
QApplicationPrivate::setFocusWidget(0) for either of them.

At the time of the initial QApplicationPrivate::setFocusWidget (which happens
when konqueror calls part->widget()->setFocus()), the WebEngineView
doesn't have a focus proxy yet.

That happens later, in QWebEngineViewPrivate::widgetChanged.
QWidget::setFocusProxy doesn't update the app focus_proxy, that seems to be
what's missing. No idea how it ever worked before though.

Reproduced with unittest for Qt. Made a Qt fix.
https://codereview.qt-project.org/c/qt/qtbase/+/268743

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to