qt6-bb10/tests/auto/widgets/kernel
Volker Hilsheimer 71b3d18ea7 Notify about focus object changes upon widget destruction
If the active QWidget gets destroyed, then QWidgetWindow::focusObject
will return nullptr. If then no other object takes focus, then we'd
never emit change signals, and QGuiApplication's _q_updateFocusObject
(which then informs the input context and emits signals) didn't get
called. This left the input context with a dangling focus object
pointer, which resulted in crashes.

If the QWidget clears its focus, but the corresponding window doesn't
know that it had focus, then fall back to the widget's focus widget
to see if we have a change in focus, so that signals get emitted.

Add a test case that shows that we didn't call _q_updateFocusObject
by counting emissions of the QGuiApplication::focusObjectChanged
signal, which we emit in this function. The signal is emitted more
than once both when showing a widget, and now also when destroying
a widget that has a focus child. The former is a previous issue,
the latter is an improvement to not emitting the signal at all.

Pick-to: 6.3 6.2
Fixes: QTBUG-101423
Fixes: QTBUG-101321
Change-Id: Ib96a397211d442f52ce795a3eebd055a0ef51b0d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2022-03-25 17:04:37 +01:00
..
qaction Don't fire shortcut if the action only lives in an unreachable submenu 2021-10-25 17:17:40 +00:00
qactiongroup Remove the qmake project files 2021-01-07 15:32:28 +01:00
qapplication QProcess/Unix: ensure we don't accidentally execute something from CWD 2022-02-09 11:26:32 -08:00
qboxlayout Remove the qmake project files 2021-01-07 15:32:28 +01:00
qformlayout QFormLayout: Fix assert when showing with hidden rows 2022-03-15 12:45:46 +01:00
qgesturerecognizer Fix widget gesture grabbing 2021-12-11 00:51:10 +01:00
qgridlayout Activate all tst_qgridlayout tests on Android 2022-02-22 17:22:59 +01:00
qlayout Cleanup tests that add test data to resources explicitly 2022-02-11 21:54:44 +01:00
qshortcut Further improve QShortcut test 2022-01-18 22:42:44 +01:00
qsizepolicy Remove the qmake project files 2021-01-07 15:32:28 +01:00
qstackedlayout Remove the qmake project files 2021-01-07 15:32:28 +01:00
qtooltip Unskip QToolTip::keyEvent test on macOS 2021-09-09 19:22:55 +00:00
qwidget Try to stabilize QWidget::enterLeaveOnWindowShowHide 2022-03-23 03:31:44 +01:00
qwidget_window Notify about focus object changes upon widget destruction 2022-03-25 17:04:37 +01:00
qwidgetaction QWidgetAction: add test for defaultWidget() being deleted before action 2021-06-22 11:38:32 +02:00
qwidgetmetatype Remove the qmake project files 2021-01-07 15:32:28 +01:00
qwidgetrepaintmanager Add unit test for moving of opaque widgets 2021-12-08 23:06:42 +00:00
qwidgetsvariant Remove the qmake project files 2021-01-07 15:32:28 +01:00
qwindowcontainer Remove the qmake project files 2021-01-07 15:32:28 +01:00
CMakeLists.txt Add testcase for QWidgetRepaintManager 2021-09-30 21:10:48 +02:00