qt6-bb10/tests/auto/widgets/kernel/qwidget
Tor Arne Vestbø 5b09d9e6d6 Sync QWindow visible state during QWidget destruction
A call to QWidget::destroy() will end up in QWindow::destroy(), which
calls QWindow::setVisible(false).

A call to QWindow::setVisible(false) on a widget's window will under
normal circumstances end up in QWidgetPrivate::setVisible(), which in
turn recurses back into QWindowPrivate::setVisible(), via
QWidgetPrivate::hide_helper(), ensuring that the QWindow internal
state is updated, visibleChanged emitted, and show/hide events sent.

Durin QWidget::destroy() we end up in QWindow::destroy(), which calls
QWindow::setVisible(false), but in this case the widget no longer has
Qt::WA_WState_Created, so the hide_helper() call is skipped, and the
corresponding QWindow is not kept in the loop.

To work around this we could have checked for windowHandle() instead
of Qt::WA_WState_Created before calling hide_helper(), but that had
many other side effects, so we opt for a more targeted fix.

Pick-to: 6.7 6.6 6.5
Change-Id: I68f80e5f7df9ee811afcd274a7ee4de31a110da5
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2023-12-20 14:33:49 +01:00
..
.gitignore
BLACKLIST Fix tst_QWidget::hoverPosition blacklisting for x86_64 2023-10-31 10:27:19 +01:00
CMakeLists.txt CMake: Make widgets tests standalone projects 2023-07-05 15:09:32 +02:00
geometry-fullscreen.dat
geometry-maximized.dat
geometry.dat
hellotr_la.qm Send the LanguageChange event to all top level windows, not just widgets 2020-02-18 22:11:30 +01:00
tst_qwidget.cpp Sync QWindow visible state during QWidget destruction 2023-12-20 14:33:49 +01:00