QMessageBox: don't use a native dialog if a style sheet is active

With 6.5 we try to use the native message dialog if we can, but we
didn't account for the style sheet. This restores pre-6.5 behavior for
QMessageBox.

Other dialogs will continue to be native, even if a style sheet is in
use. While this is inconsistent, the other dialogs are substantially
more functional, so switching to the Qt version because of a style sheet
being active would be a significant change of behavior.

Fixes: QTBUG-120054
Change-Id: I07eae609bc360140e096c5eb7ad004ffa4422123
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
(cherry picked from commit 1b71e2d894c2be7052518cdcb96020c9950e2dc7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 3158aa546d3a8e0430f079e0d8b2da0f330628d1)
(cherry picked from commit 04dda6cae05109ad5a3a681587ec9cd2cc49028a)
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
Volker Hilsheimer 2023-12-14 13:44:44 +01:00
parent aaf79913f7
commit 1358bd9db5

View File

@ -2720,7 +2720,8 @@ bool QMessageBoxPrivate::canBeNativeDialog() const
if (nativeDialogInUse)
return true;
if (QCoreApplication::testAttribute(Qt::AA_DontUseNativeDialogs)
|| q->testAttribute(Qt::WA_DontShowOnScreen)) {
|| q->testAttribute(Qt::WA_DontShowOnScreen)
|| q->testAttribute(Qt::WA_StyleSheet)) {
return false;
}