aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickmenu.cpp3
-rw-r--r--tests/auto/menu/tst_menu.cpp6
2 files changed, 9 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index c7dd0ea5..4d1cfc52 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -702,6 +702,9 @@ void QQuickMenu::popup(QQmlV4Function *args)
if (!pos.isNull)
setPosition(pos);
+ if (menuItem)
+ d->setCurrentIndex(d->contentModel->indexOf(menuItem, nullptr));
+
open();
}
diff --git a/tests/auto/menu/tst_menu.cpp b/tests/auto/menu/tst_menu.cpp
index 8f4792ae..c394717e 100644
--- a/tests/auto/menu/tst_menu.cpp
+++ b/tests/auto/menu/tst_menu.cpp
@@ -413,16 +413,19 @@ void tst_menu::popup()
QTRY_COMPARE(QCursor::pos(), cursorPos);
QVERIFY(QMetaObject::invokeMethod(window, "popupAtCursor"));
+ QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), -1);
QTRY_COMPARE(menu->property("x").toInt(), 11);
QTRY_COMPARE(menu->property("y").toInt(), 22);
menu->close();
QVERIFY(QMetaObject::invokeMethod(window, "popupAtPos", Q_ARG(QVariant, QPointF(33, 44))));
+ QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), -1);
QTRY_COMPARE(menu->property("x").toInt(), 33);
QTRY_COMPARE(menu->property("y").toInt(), 44);
menu->close();
QVERIFY(QMetaObject::invokeMethod(window, "popupAtCoord", Q_ARG(QVariant, 55), Q_ARG(QVariant, 66)));
+ QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), -1);
QTRY_COMPARE(menu->property("x").toInt(), 55);
QTRY_COMPARE(menu->property("y").toInt(), 66);
menu->close();
@@ -434,16 +437,19 @@ void tst_menu::popup()
const QList<QQuickMenuItem *> menuItems = QList<QQuickMenuItem *>() << menuItem1 << menuItem2 << menuItem3;
for (QQuickMenuItem *menuItem : menuItems) {
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtCursor", Q_ARG(QVariant, QVariant::fromValue(menuItem))));
+ QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
QTRY_COMPARE(menu->property("x").toInt(), 12);
QTRY_COMPARE(menu->property("y").toInt(), window->height() / 2 + menu->topPadding() - menuItem->y());
menu->close();
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtPos", Q_ARG(QVariant, QPointF(33, window->height() / 3)), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
+ QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
QTRY_COMPARE(menu->property("x").toInt(), 33);
QTRY_COMPARE(menu->property("y").toInt(), window->height() / 3 + menu->topPadding() - menuItem->y());
menu->close();
QVERIFY(QMetaObject::invokeMethod(window, "popupItemAtCoord", Q_ARG(QVariant, 55), Q_ARG(QVariant, window->height() / 3 * 2), Q_ARG(QVariant, QVariant::fromValue(menuItem))));
+ QCOMPARE(menu->contentItem()->property("currentIndex").toInt(), menuItems.indexOf(menuItem));
QTRY_COMPARE(menu->property("x").toInt(), 55);
QTRY_COMPARE(menu->property("y").toInt(), window->height() / 3 * 2 + menu->topPadding() - menuItem->y());
menu->close();