From 6c0e1dba403ce65285e089bf281319de36d29235 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 18 Sep 2019 10:18:31 +0200 Subject: QWizard/AeroStyle: Fix crash when Qt::AA_NativeWindows is set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prevent recursive platform window creation from the events received during window creation (WM_POSCHANGING, etc). Fixes: QTBUG-78300 Change-Id: Ie2bb4308af645c30e556666589e2dd08f14d4035 Reviewed-by: André de la Rocha --- src/widgets/dialogs/qwizard.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/widgets/dialogs') diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index f6f540f57c..ccbf8491b3 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -3267,7 +3267,10 @@ bool QWizard::nativeEvent(const QByteArray &eventType, void *message, long *resu if (QVistaHelper::vistaState() != d->vistaState) { d->vistaState = QVistaHelper::vistaState(); d->vistaStateChanged = true; - setWizardStyle(AeroStyle); + // QTBUG-78300: When Qt::AA_NativeWindows is set, delay further + // window creation until after the platform window creation events. + if (windowsMessage->message == WM_GETICON) + setWizardStyle(AeroStyle); } return winEventResult; } else { -- cgit v1.2.3 From 1ceb48c6a6aa7d718a6abfc7390cde387f990ed9 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 18 Sep 2019 15:49:07 +0200 Subject: QWizard/AeroStyle: Fix condition introduced by previous fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Set the variables within the condition introduced by 6c0e1dba403ce65285e089bf281319de36d29235, as otherwise, the code might not be executed. Task-number: QTBUG-78300 Change-Id: Ia83db6fce197ebf16783f3b0c6d6fad7ebd2ba52 Reviewed-by: André de la Rocha Reviewed-by: Oliver Wolff --- src/widgets/dialogs/qwizard.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/widgets/dialogs') diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp index ccbf8491b3..7b26d9a67a 100644 --- a/src/widgets/dialogs/qwizard.cpp +++ b/src/widgets/dialogs/qwizard.cpp @@ -3265,12 +3265,13 @@ bool QWizard::nativeEvent(const QByteArray &eventType, void *message, long *resu MSG *windowsMessage = static_cast(message); const bool winEventResult = d->vistaHelper->handleWinEvent(windowsMessage, result); if (QVistaHelper::vistaState() != d->vistaState) { - d->vistaState = QVistaHelper::vistaState(); - d->vistaStateChanged = true; // QTBUG-78300: When Qt::AA_NativeWindows is set, delay further // window creation until after the platform window creation events. - if (windowsMessage->message == WM_GETICON) + if (windowsMessage->message == WM_GETICON) { + d->vistaStateChanged = true; + d->vistaState = QVistaHelper::vistaState(); setWizardStyle(AeroStyle); + } } return winEventResult; } else { -- cgit v1.2.3