summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp')
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index a5b33ed8e7..b04fb7cd5d 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -132,6 +132,7 @@ private slots:
void taskQTBUG53205_crashReparentNested();
#ifdef Q_OS_MACOS
void taskQTBUG56275_reinsertMenuInParentlessQMenuBar();
+ void QTBUG_57404_existingMenuItemException();
#endif
void taskQTBUG55966_subMenuRemoved();
@@ -1540,6 +1541,31 @@ void tst_QMenuBar::taskQTBUG56275_reinsertMenuInParentlessQMenuBar()
QVERIFY(tst_qmenubar_taskQTBUG56275(&menubar));
}
+
+void tst_QMenuBar::QTBUG_57404_existingMenuItemException()
+{
+ QMainWindow mw1;
+ QMainWindow mw2;
+ mw1.show();
+ mw2.show();
+
+ QMenuBar *mb = new QMenuBar(&mw1);
+ mw1.setMenuBar(mb);
+ mb->show();
+ QMenu *editMenu = new QMenu(QLatin1String("Edit"), &mw1);
+ mb->addMenu(editMenu);
+ QAction *copyAction = editMenu->addAction("&Copy");
+ copyAction->setShortcut(QKeySequence("Ctrl+C"));
+ QTest::ignoreMessage(QtWarningMsg, "Menu item \"&Copy\" has unsupported role QPlatformMenuItem::MenuRole(NoRole)");
+ copyAction->setMenuRole(QAction::NoRole);
+
+ QVERIFY(QTest::qWaitForWindowExposed(&mw2));
+ QTest::qWait(100);
+ mw2.close();
+ mw1.activateWindow();
+ QTest::qWait(100);
+ // No crash, all fine. Ideally, there should be only one warning.
+}
#endif // Q_OS_MACOS
void tst_QMenuBar::taskQTBUG55966_subMenuRemoved()