summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets/qmenu
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2016-03-22 07:24:57 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2016-03-22 07:28:42 +0100
commita02863234d76abb6c9f289026ae4ea3145924f30 (patch)
treeaef6381d0000a78ba69ac80eb03739b1c8ca5fc3 /tests/auto/widgets/widgets/qmenu
parente77b13621f0057374d83a2b884f03dd2e5b7b88c (diff)
parente4d79e1fdeb6b26ba0b12b578daacf7cd672b960 (diff)
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts: configure mkspecs/common/wince/qplatformdefs.h src/plugins/platforms/directfb/qdirectfbbackingstore.cpp src/plugins/platforms/xcb/qxcbbackingstore.cpp Change-Id: Ied4d31264a9afca9514b51a7eb1494c28712793c
Diffstat (limited to 'tests/auto/widgets/widgets/qmenu')
-rw-r--r--tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp48
1 files changed, 38 insertions, 10 deletions
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index 17efc05f59..c3b432788b 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -591,10 +591,19 @@ void tst_QMenu::widgetActionFocus()
QCOMPARE(m.activeAction(), (QAction *)wa);
}
+static QMenu *getTornOffMenu()
+{
+ foreach (QWidget *w, QApplication::allWidgets()) {
+ if (w->isVisible() && w->inherits("QTornOffMenu"))
+ return static_cast<QMenu *>(w);
+ }
+ return Q_NULLPTR;
+}
+
void tst_QMenu::tearOff()
{
QWidget widget;
- QMenu *menu = new QMenu(&widget);
+ QScopedPointer<QMenu> menu(new QMenu(&widget));
QVERIFY(!menu->isTearOffEnabled()); //default value
menu->setTearOffEnabled(true);
menu->addAction("aaa");
@@ -607,24 +616,43 @@ void tst_QMenu::tearOff()
widget.activateWindow();
QVERIFY(QTest::qWaitForWindowActive(&widget));
menu->popup(widget.geometry().topRight() + QPoint(50, 0));
- QVERIFY(QTest::qWaitForWindowActive(menu));
+ QVERIFY(QTest::qWaitForWindowActive(menu.data()));
QVERIFY(!menu->isTearOffMenuVisible());
- QTest::mouseClick(menu, Qt::LeftButton, 0, QPoint(3, 3), 10);
+ QTest::mouseClick(menu.data(), Qt::LeftButton, 0, QPoint(3, 3), 10);
QTRY_VERIFY(menu->isTearOffMenuVisible());
- QPointer<QMenu> torn = 0;
- foreach (QWidget *w, QApplication::allWidgets()) {
- if (w->inherits("QTornOffMenu")) {
- torn = static_cast<QMenu *>(w);
- break;
- }
- }
+ QPointer<QMenu> torn = getTornOffMenu();
+ QVERIFY(torn);
+ QVERIFY(torn->isVisible());
+
+ menu->hideTearOffMenu();
+ QVERIFY(!menu->isTearOffMenuVisible());
+ QVERIFY(!torn->isVisible());
+
+#ifndef QT_NO_CURSOR
+ // Test under-mouse positioning
+ menu->showTearOffMenu();
+ torn = getTornOffMenu();
QVERIFY(torn);
QVERIFY(torn->isVisible());
+ QVERIFY(menu->isTearOffMenuVisible());
+ // Some platforms include the window title bar in its geometry.
+ QTRY_COMPARE(torn->windowHandle()->position(), QCursor::pos());
menu->hideTearOffMenu();
QVERIFY(!menu->isTearOffMenuVisible());
QVERIFY(!torn->isVisible());
+
+ // Test custom positioning
+ const QPoint &pos = QCursor::pos() / 2 + QPoint(10, 10);
+ menu->showTearOffMenu(pos);
+ torn = getTornOffMenu();
+ QVERIFY(torn);
+ QVERIFY(torn->isVisible());
+ QVERIFY(menu->isTearOffMenuVisible());
+ // Some platforms include the window title bar in its geometry.
+ QTRY_COMPARE(torn->windowHandle()->position(), pos);
+#endif // QT_NO_CURSOR
}
void tst_QMenu::layoutDirection()