diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-12-02 23:33:06 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-12-02 23:33:06 +0100 |
commit | 72f5867f144cec8fc7848cbcc772683fe845652d (patch) | |
tree | 7513af27b59332bf111f406d304977adc8c8612e /tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp | |
parent | 13777097118c496391d4b9656b95097ac25e4a40 (diff) | |
parent | bf0af8b5a24de7e595929a64948a3548936aaaee (diff) |
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts:
src/corelib/kernel/qcoreapplication.cpp
src/corelib/kernel/qeventdispatcher_blackberry.cpp
src/network/bearer/qnetworkconfiguration.cpp
src/plugins/bearer/blackberry/qbbengine.cpp
src/plugins/platforms/android/androidjnimain.cpp
src/plugins/platforms/android/qandroidplatformtheme.cpp
src/plugins/platforms/qnx/qqnxbpseventfilter.cpp
src/plugins/platforms/qnx/qqnxfiledialoghelper_bb10.cpp
src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp
src/plugins/platforms/qnx/qqnxintegration.cpp
src/plugins/platforms/qnx/qqnxnavigatorbps.cpp
src/plugins/platforms/qnx/qqnxvirtualkeyboardbps.cpp
src/plugins/platforms/qnx/qqnxwindow.cpp
src/widgets/kernel/qwidgetwindow.cpp
src/widgets/styles/qwindowsvistastyle.cpp
src/widgets/styles/qwindowsxpstyle.cpp
src/widgets/widgets/qtoolbararealayout.cpp
tests/auto/corelib/global/qflags/qflags.pro
tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
tests/auto/corelib/tools/qversionnumber/qversionnumber.pro
tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
Change-Id: I37be88c6c185bb85404823353e027a0a6acdbce4
Diffstat (limited to 'tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp')
-rw-r--r-- | tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp index eaa277093c..ec46d7e625 100644 --- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp +++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp @@ -94,6 +94,7 @@ private slots: void task208001_stylesheet(); void activeSubMenuPosition(); + void activeSubMenuPositionExec(); void task242454_sizeHint(); void task176201_clear(); void task250673_activeMultiColumnSubMenuPosition(); @@ -694,6 +695,61 @@ void tst_QMenu::activeSubMenuPosition() #endif } +// QTBUG-49588, QTBUG-48396: activeSubMenuPositionExec() is the same as +// activeSubMenuPosition(), but uses QMenu::exec(), which produces a different +// sequence of events. Verify that the sub menu is positioned to the right of the +// main menu. +class SubMenuPositionExecMenu : public QMenu +{ + Q_OBJECT +public: + SubMenuPositionExecMenu() : QMenu("Menu-Title"), m_timerId(-1), m_timerTick(0) + { + addAction("Item 1"); + m_subMenu = addMenu("Submenu"); + m_subAction = m_subMenu->addAction("Sub-Item1"); + setActiveAction(m_subMenu->menuAction()); + } + +protected: + void showEvent(QShowEvent *e) Q_DECL_OVERRIDE + { + QVERIFY(m_subMenu->isVisible()); + QVERIFY2(m_subMenu->x() > x(), + (QByteArray::number(m_subMenu->x()) + ' ' + QByteArray::number(x())).constData()); + m_timerId = startTimer(50); + QMenu::showEvent(e); + } + + void timerEvent(QTimerEvent *e) Q_DECL_OVERRIDE + { + if (e->timerId() == m_timerId) { + switch (m_timerTick++) { + case 0: + m_subMenu->close(); + break; + case 1: + close(); + break; + } + } + } + +private: + int m_timerId; + int m_timerTick; + QMenu *m_subMenu; + QAction *m_subAction; +}; + +void tst_QMenu::activeSubMenuPositionExec() +{ +#ifndef Q_OS_WINCE + SubMenuPositionExecMenu menu; + menu.exec(QGuiApplication::primaryScreen()->availableGeometry().center()); +#endif // !Q_OS_WINCE +} + void tst_QMenu::task242454_sizeHint() { QMenu menu; |