diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 3b4daa0f8fc..1aa694ef2c1 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -431,7 +431,7 @@ namespace Qt { AA_MacDontSwapCtrlAndMeta = 7, AA_Use96Dpi = 8, AA_DisableNativeVirtualKeyboard = 9, - // AA_X11InitThreads = 10, + AA_DontUseNativeMenuWindows = 10, AA_SynthesizeTouchForUnhandledMouseEvents = 11, AA_SynthesizeMouseForUnhandledTouchEvents = 12, #if QT_DEPRECATED_SINCE(6, 0) @@ -463,7 +463,6 @@ namespace Qt { AA_CompressTabletEvents = 29, // AA_DisableWindowContextHelpButton = 30, AA_DisableSessionManager = 31, - AA_DontUseNativeMenuWindows = 32, // Add new attributes before this line AA_AttributeCount diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp index 1271f53e57d..0745ea6ceb1 100644 --- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp +++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp @@ -1108,6 +1108,57 @@ void tst_QCoreApplication::testDeleteLaterFromBeforeOutermostEventLoop() QVERIFY(!spyPointer); } +void tst_QCoreApplication::setIndividualAttributes_data() +{ + QTest::addColumn("attribute"); + + const QMetaEnum &metaEnum = Qt::staticMetaObject.enumerator(Qt::staticMetaObject.indexOfEnumerator("ApplicationAttribute")); + // - 1 to avoid AA_AttributeCount. + for (int i = 0; i < metaEnum.keyCount(); ++i) { + const auto attribute = static_cast(metaEnum.value(i)); + if (attribute == Qt::AA_AttributeCount) + continue; + + QTest::addRow("%s", metaEnum.key(i)) << attribute; + } +} + +void tst_QCoreApplication::setIndividualAttributes() +{ + QFETCH(Qt::ApplicationAttribute, attribute); + + const auto originalValue = QCoreApplication::testAttribute(attribute); + auto cleanup = qScopeGuard([=]() { + QCoreApplication::setAttribute(attribute, originalValue); + }); + + QCoreApplication::setAttribute(attribute, true); + QVERIFY(QCoreApplication::testAttribute(attribute)); + + QCoreApplication::setAttribute(attribute, false); + QVERIFY(!QCoreApplication::testAttribute(attribute)); +} + +void tst_QCoreApplication::setMultipleAttributes() +{ + const auto originalDontUseNativeMenuWindowsValue = QCoreApplication::testAttribute(Qt::AA_DontUseNativeMenuWindows); + const auto originalDisableSessionManagerValue = QCoreApplication::testAttribute(Qt::AA_DisableSessionManager); + auto cleanup = qScopeGuard([=]() { + QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuWindows, originalDontUseNativeMenuWindowsValue); + QCoreApplication::setAttribute(Qt::AA_DisableSessionManager, originalDisableSessionManagerValue); + }); + + QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuWindows, true); + QCoreApplication::setAttribute(Qt::AA_DisableSessionManager, true); + QVERIFY(QCoreApplication::testAttribute(Qt::AA_DontUseNativeMenuWindows)); + QVERIFY(QCoreApplication::testAttribute(Qt::AA_DisableSessionManager)); + + QCoreApplication::setAttribute(Qt::AA_DontUseNativeMenuWindows, false); + QCoreApplication::setAttribute(Qt::AA_DisableSessionManager, false); + QVERIFY(!QCoreApplication::testAttribute(Qt::AA_DontUseNativeMenuWindows)); + QVERIFY(!QCoreApplication::testAttribute(Qt::AA_DisableSessionManager)); +} + #ifndef QT_QGUIAPPLICATIONTEST QTEST_APPLESS_MAIN(tst_QCoreApplication) #endif diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h index 269b5d5bdba..1c25f635347 100644 --- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h +++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.h @@ -46,6 +46,9 @@ private slots: #endif void theMainThread(); void testDeleteLaterFromBeforeOutermostEventLoop(); + void setIndividualAttributes_data(); + void setIndividualAttributes(); + void setMultipleAttributes(); }; #endif // TST_QCOREAPPLICATION_H