diff options
Diffstat (limited to 'tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp index 5e27f5e80f..52e631ef57 100644 --- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp +++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp @@ -131,6 +131,11 @@ private slots: void cornerWidgets(); void taskQTBUG53205_crashReparentNested(); void taskQTBUG46812_doNotLeaveMenubarHighlighted(); +#ifdef Q_OS_MACOS + void taskQTBUG56275_reinsertMenuInParentlessQMenuBar(); +#endif + + void platformMenu(); protected slots: void onSimpleActivated( QAction*); @@ -1493,6 +1498,25 @@ void tst_QMenuBar::taskQTBUG53205_crashReparentNested() testMenus.actions[0]->trigger(); } +// QTBUG-56526 +void tst_QMenuBar::platformMenu() +{ + QMenuBar menuBar; + QPlatformMenuBar *platformMenuBar = menuBar.platformMenuBar(); + if (!platformMenuBar) + QSKIP("No platform menubar implementation available on this platform."); + + // QMenu must not create a platform menu instance at creation time, because + // on Unity the type of the platform menu instance must be different (QGtk3Menu + // vs. QDbusPlatformMenu) depending on whether the menu is in the global menubar + // or a standalone context menu. + QMenu *menu = new QMenu(&menuBar); + QVERIFY(!menu->platformMenu()); + + menuBar.addMenu(menu); + QVERIFY(menu->platformMenu()); +} + void tst_QMenuBar::slotForTaskQTBUG53205() { QWidget *parent = taskQTBUG53205MenuBar->parentWidget(); @@ -1532,6 +1556,28 @@ void tst_QMenuBar::taskQTBUG46812_doNotLeaveMenubarHighlighted() QCOMPARE(m_simpleActivatedCount, 2); } +#ifdef Q_OS_MACOS +extern bool tst_qmenubar_taskQTBUG56275(QMenuBar *); + +void tst_QMenuBar::taskQTBUG56275_reinsertMenuInParentlessQMenuBar() +{ + QMenuBar menubar; + + QMenu *menu = new QMenu("menu", &menubar); + QMenu* submenu = menu->addMenu("submenu"); + submenu->addAction("action1"); + submenu->addAction("action2"); + menu->addAction("action3"); + menubar.addMenu(menu); + + QTest::qWait(100); + menubar.clear(); + menubar.addMenu(menu); + QTest::qWait(100); + + QVERIFY(tst_qmenubar_taskQTBUG56275(&menubar)); +} +#endif // Q_OS_MACOS QTEST_MAIN(tst_QMenuBar) #include "tst_qmenubar.moc" |