qt5base-lts/tests/auto/widgets/kernel/qwidget
David Faure 3e7463411e Fix crash when the focus widget gets a focus proxy after the fact
QApplicationPrivate::focus_widget became a dangling pointer
in the following scenario:

A widget first gets focus and later on gets a focus proxy.
QApplicationPrivate::focus_widget was still pointing to the initial widget.
Upon destruction, QWidget::hasFocus() [which follows to the focus proxy
and then compares with focus_widget] was therefore false for both
widgets. So QWidget::clearFocus() didn't call
QApplicationPrivate::setFocusWidget(0) for either of them. As a
result, focus_widget remained set, and became dangling.

In real life, this happened with a QWebEngineView, which the application
gave focus to upon creation. At that time it doesn't have a focus proxy
yet. That happens later, in QWebEngineViewPrivate::widgetChanged.

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

Change-Id: Ifee610bb76a2d4d2797b98ece9bffe5fffe3c6a6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2019-07-29 17:15:02 +02:00
..
testdata/paintEvent Moved tests into integrationtests/ and widgets/ 2011-10-20 19:45:41 +02:00
.gitignore Moved tests into integrationtests/ and widgets/ 2011-10-20 19:45:41 +02:00
BLACKLIST Blacklist tst_QWidget::windowState on WinRT 2019-04-23 11:32:28 +00:00
geometry-fullscreen.dat Moved tests into integrationtests/ and widgets/ 2011-10-20 19:45:41 +02:00
geometry-maximized.dat Moved tests into integrationtests/ and widgets/ 2011-10-20 19:45:41 +02:00
geometry.dat Moved tests into integrationtests/ and widgets/ 2011-10-20 19:45:41 +02:00
qwidget.pro Merge remote-tracking branch 'origin/5.9' into 5.10 2017-11-09 11:47:57 +01:00
qwidget.qrc Moved tests into integrationtests/ and widgets/ 2011-10-20 19:45:41 +02:00
tst_qwidget_mac_helpers.h Updated license headers 2016-01-21 18:55:18 +00:00
tst_qwidget_mac_helpers.mm Updated license headers 2016-01-21 18:55:18 +00:00
tst_qwidget.cpp Fix crash when the focus widget gets a focus proxy after the fact 2019-07-29 17:15:02 +02:00