From d3545dbdfdb30e310c6c962ba92f4fdf57354666 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Wed, 14 Nov 2018 11:13:15 +0100 Subject: Revert all Menu delegate patches This reverts the following commits: d5cb26bc56a3b6f6e99c88654d4f7a65f43551ac - Menu: ensure the correct delegates are used when created via Component d923dd467c1aeb3e195a09949b04862084002f88 - MenuBar: ensure the correct delegates are used when created via Component d56c193eb4ceb640611d66f22e1f26aae91cd7d1 - QQuickPopupPositioner: avoid adding duplicate item change listeners 567a2de8cd493aabe0055d6dbc367b39447e70dd - Stabilize tst_qquickmenubar 953fbac6131823e4fce0eb4707a854469c4c04ff - Fix Instantiator-created MenuItems disappearing 936d31179d44220571ded15840bedeccb581c83b - tst_qquickmenu: add a test for MenuItems before and after a Repeater fc1832810f6c09505d9413685ed0b2d6295bea4a - QQuickMenuBar: fix menu not opening The fix for QTBUG-67559 has caused lots of issues, with the latest being a crash right before the 5.12 release. The bug that they fix is a P2, so it's not worth the hassle. The patches might be able to be resubmitted to dev after the crash is fixed. Change-Id: Ic192c7a302176bcdb2503b636b3462b10898a2ba Fixes: QTBUG-71770 Reviewed-by: J-P Nurmi Reviewed-by: Shawn Rutledge --- tests/auto/qquickmenubar/qquickmenubar.pro | 1 - tests/auto/qquickmenubar/tst_qquickmenubar.cpp | 101 ------------------------- 2 files changed, 102 deletions(-) (limited to 'tests/auto/qquickmenubar') diff --git a/tests/auto/qquickmenubar/qquickmenubar.pro b/tests/auto/qquickmenubar/qquickmenubar.pro index d2f28e47..b7d41f0f 100644 --- a/tests/auto/qquickmenubar/qquickmenubar.pro +++ b/tests/auto/qquickmenubar/qquickmenubar.pro @@ -1,6 +1,5 @@ CONFIG += testcase TARGET = tst_qquickmenubar -HEADERS += ../shared/menuutil.h SOURCES += tst_qquickmenubar.cpp macos:CONFIG -= app_bundle diff --git a/tests/auto/qquickmenubar/tst_qquickmenubar.cpp b/tests/auto/qquickmenubar/tst_qquickmenubar.cpp index 70d487a9..19d67eac 100644 --- a/tests/auto/qquickmenubar/tst_qquickmenubar.cpp +++ b/tests/auto/qquickmenubar/tst_qquickmenubar.cpp @@ -36,17 +36,13 @@ #include #include -#include -#include "../shared/menuutil.h" #include "../shared/util.h" #include "../shared/visualtestutil.h" #include "../shared/qtest_quickcontrols.h" #include #include -#include #include -#include #include #include @@ -64,8 +60,6 @@ private slots: void keys(); void mnemonics(); void addRemove(); - void delegateFromSeparateComponent(); - void openTwice(); }; void tst_qquickmenubar::delegate() @@ -110,13 +104,6 @@ void tst_qquickmenubar::mouse() QQuickMenuBarItem *viewMenuBarItem = qobject_cast(viewMenuBarMenu->parentItem()); QQuickMenuBarItem *helpMenuBarItem = qobject_cast(helpMenuBarMenu->parentItem()); QVERIFY(fileMenuBarItem && editMenuBarItem && viewMenuBarItem && helpMenuBarItem); - // Something about postponing delegate creation to component completion - // means that the fileMenuBarItem->isHighlighted() check below fails occasionally. - // Give it a chance to sort itself out before sending move events. - QQuickMenuBarPrivate *menuBarPrivate = QQuickMenuBarPrivate::get(menuBar); - menuBar->polish(); - QVERIFY(menuBarPrivate->polishScheduled); - QTRY_VERIFY(!menuBarPrivate->polishScheduled); // highlight a menubar item QTest::mouseMove(window.data(), fileMenuBarItem->mapToScene(QPointF(fileMenuBarItem->width() / 2, fileMenuBarItem->height() / 2)).toPoint()); @@ -159,7 +146,6 @@ void tst_qquickmenubar::mouse() QVERIFY(helpMenuBarMenu->isVisible()); QTRY_VERIFY(!editMenuBarMenu->isVisible()); QTRY_VERIFY(helpMenuBarMenu->isOpened()); - waitForMenuListViewPolish(helpMenuBarMenu); // trigger a menu item to close the menu QQuickMenuItem *aboutMenuItem = qobject_cast(helpMenuBarMenu->itemAt(0)); @@ -181,7 +167,6 @@ void tst_qquickmenubar::mouse() QVERIFY(viewMenuBarItem->isHighlighted()); QVERIFY(viewMenuBarMenu->isVisible()); QTRY_VERIFY(viewMenuBarMenu->isOpened()); - waitForMenuListViewPolish(viewMenuBarMenu); // trigger a menu item to open a sub-menu QQuickMenuItem *alignmentSubMenuItem = qobject_cast(viewMenuBarMenu->itemAt(0)); @@ -192,7 +177,6 @@ void tst_qquickmenubar::mouse() QVERIFY(viewMenuBarMenu->isVisible()); QVERIFY(alignmentSubMenu->isVisible()); QTRY_VERIFY(alignmentSubMenu->isOpened()); - waitForMenuListViewPolish(alignmentSubMenu); // trigger a menu item to open a sub-sub-menu QQuickMenuItem *verticalSubMenuItem = qobject_cast(alignmentSubMenu->itemAt(1)); @@ -204,7 +188,6 @@ void tst_qquickmenubar::mouse() QVERIFY(alignmentSubMenu->isVisible()); QVERIFY(verticalSubMenu->isVisible()); QTRY_VERIFY(verticalSubMenu->isOpened()); - waitForMenuListViewPolish(verticalSubMenu); // trigger a menu item to close the whole chain of menus QQuickMenuItem *centerMenuItem = qobject_cast(verticalSubMenu->itemAt(1)); @@ -581,90 +564,6 @@ void tst_qquickmenubar::addRemove() QVERIFY(menuBarItem1.isNull()); } -// QTBUG-67559 -// Test that Menus declared as children of a MenuBar have the -// correct delegate when it is declared outside of the MenuBar as a Component. -void tst_qquickmenubar::delegateFromSeparateComponent() -{ - QQuickApplicationHelper helper(this, QLatin1String("delegateFromSeparateComponent.qml")); - QQuickWindow *window = helper.window; - window->show(); - QVERIFY(QTest::qWaitForWindowActive(window)); - - const QColor green = QColor::fromRgb(0x00ff00); - - QQuickMenuBar *menuBar = window->property("menuBar").value(); - QVERIFY(menuBar); - - QQuickMenu *menu = qobject_cast(menuBar->menuAt(0)); - QVERIFY(menu); - - QQuickMenuBarItem *menuBarItem = qobject_cast(menu->parentItem()); - QVERIFY(menuBarItem); - - QQuickItem *menuBarItemBg = menuBarItem->property("background").value(); - QVERIFY(menuBarItemBg); - QCOMPARE(menuBarItemBg->property("color").value(), green); -} - -void tst_qquickmenubar::openTwice() -{ - if ((QGuiApplication::platformName() == QLatin1String("offscreen")) - || (QGuiApplication::platformName() == QLatin1String("minimal"))) - QSKIP("Mouse highlight not functional on offscreen/minimal platforms"); - - QQmlApplicationEngine engine(testFileUrl("menubar.qml")); - - QScopedPointer window(qobject_cast(engine.rootObjects().value(0))); - QVERIFY(window); - QVERIFY(QTest::qWaitForWindowActive(window.data())); - - centerOnScreen(window.data()); - - QQuickMenuBar *menuBar = window->property("header").value(); - QVERIFY(menuBar); - - QQuickMenu *fileMenuBarMenu = menuBar->menuAt(0); - QVERIFY(fileMenuBarMenu); - - QQuickMenuBarItem *fileMenuBarItem = qobject_cast(fileMenuBarMenu->parentItem()); - QVERIFY(fileMenuBarItem); - QQuickMenuBarPrivate *menuBarPrivate = QQuickMenuBarPrivate::get(menuBar); - menuBar->polish(); - QVERIFY(menuBarPrivate->polishScheduled); - QTRY_VERIFY(!menuBarPrivate->polishScheduled); - - // Open a menu. - QTest::mouseClick(window.data(), Qt::LeftButton, Qt::NoModifier, - fileMenuBarItem->mapToScene(QPointF(fileMenuBarItem->width() / 2, fileMenuBarItem->height() / 2)).toPoint()); - QVERIFY(fileMenuBarItem->isHighlighted()); - QVERIFY(fileMenuBarMenu->isVisible()); - QTRY_VERIFY(fileMenuBarMenu->isOpened()); - waitForMenuListViewPolish(fileMenuBarMenu); - - // Click on an item to close the menu. - QQuickMenuItem *openMenuItem = qobject_cast(fileMenuBarMenu->itemAt(0)); - QVERIFY(openMenuItem); - QTest::mouseClick(window.data(), Qt::LeftButton, Qt::NoModifier, - openMenuItem->mapToScene(QPointF(openMenuItem->width() / 2, openMenuItem->height() / 2)).toPoint()); - QVERIFY(!fileMenuBarItem->isHighlighted()); - QTRY_VERIFY(!fileMenuBarMenu->isVisible()); - - // Re-open the menu. It should open with one click of the QQuickMenuBarItem. - QTest::mouseClick(window.data(), Qt::LeftButton, Qt::NoModifier, - fileMenuBarItem->mapToScene(QPointF(fileMenuBarItem->width() / 2, fileMenuBarItem->height() / 2)).toPoint()); - QVERIFY(fileMenuBarItem->isHighlighted()); - QVERIFY(fileMenuBarMenu->isVisible()); - QTRY_VERIFY(fileMenuBarMenu->isOpened()); - waitForMenuListViewPolish(fileMenuBarMenu); - - // Click on an item to close the menu. - QTest::mouseClick(window.data(), Qt::LeftButton, Qt::NoModifier, - openMenuItem->mapToScene(QPointF(openMenuItem->width() / 2, openMenuItem->height() / 2)).toPoint()); - QVERIFY(!fileMenuBarItem->isHighlighted()); - QTRY_VERIFY(!fileMenuBarMenu->isVisible()); -} - QTEST_QUICKCONTROLS_MAIN(tst_qquickmenubar) #include "tst_qquickmenubar.moc" -- cgit v1.2.3