102 void menuSizeHint(); |
103 void menuSizeHint(); |
103 void task258920_mouseBorder(); |
104 void task258920_mouseBorder(); |
104 void setFixedWidth(); |
105 void setFixedWidth(); |
105 void deleteActionInTriggered(); |
106 void deleteActionInTriggered(); |
106 void pushButtonPopulateOnAboutToShow(); |
107 void pushButtonPopulateOnAboutToShow(); |
|
108 void QTBUG7907_submenus_autoselect(); |
|
109 void QTBUG7411_submenus_activate(); |
|
110 void QTBUG_10735_crashWithDialog(); |
107 protected slots: |
111 protected slots: |
108 void onActivated(QAction*); |
112 void onActivated(QAction*); |
109 void onHighlighted(QAction*); |
113 void onHighlighted(QAction*); |
110 void onStatusMessageChanged(const QString &); |
114 void onStatusMessageChanged(const QString &); |
111 void onStatusTipTimer(); |
115 void onStatusTipTimer(); |
928 QTimer::singleShot(300,lastMenu, SLOT(hide())); |
932 QTimer::singleShot(300,lastMenu, SLOT(hide())); |
929 QTest::mouseClick(&b, Qt::LeftButton, Qt::NoModifier, b.rect().center()); |
933 QTest::mouseClick(&b, Qt::LeftButton, Qt::NoModifier, b.rect().center()); |
930 QVERIFY(!lastMenu->geometry().intersects(b.geometry())); |
934 QVERIFY(!lastMenu->geometry().intersects(b.geometry())); |
931 |
935 |
932 } |
936 } |
|
937 void tst_QMenu::QTBUG7907_submenus_autoselect() |
|
938 { |
|
939 QMenu menu("Test Menu"); |
|
940 QMenu set1("Setting1"); |
|
941 QMenu set2("Setting2"); |
|
942 QMenu subset("Subsetting"); |
|
943 subset.addAction("Values"); |
|
944 set1.addMenu(&subset); |
|
945 menu.addMenu(&set1); |
|
946 menu.addMenu(&set2); |
|
947 menu.show(); |
|
948 QTest::qWaitForWindowShown(&menu); |
|
949 QTest::mouseClick(&menu, Qt::LeftButton, Qt::NoModifier, QPoint(5,5) ); |
|
950 QTest::qWait(500); |
|
951 QVERIFY(!subset.isVisible()); |
|
952 } |
|
953 |
|
954 void tst_QMenu::QTBUG7411_submenus_activate() |
|
955 { |
|
956 QMenu menu("Test Menu"); |
|
957 QAction *act = menu.addAction("foo"); |
|
958 QMenu sub1("&sub1"); |
|
959 sub1.addAction("foo"); |
|
960 sub1.setTitle("&sub1"); |
|
961 QAction *act1 = menu.addMenu(&sub1); |
|
962 menu.show(); |
|
963 QTest::qWaitForWindowShown(&menu); |
|
964 menu.setActiveAction(act); |
|
965 QTest::keyPress(&menu, Qt::Key_Down); |
|
966 QCOMPARE(menu.activeAction(), act1); |
|
967 QVERIFY(!sub1.isVisible()); |
|
968 QTest::keyPress(&menu, Qt::Key_S); |
|
969 QTRY_VERIFY(sub1.isVisible()); |
|
970 } |
|
971 |
|
972 |
|
973 |
|
974 class MyMenu : public QMenu |
|
975 { |
|
976 Q_OBJECT |
|
977 public: |
|
978 MyMenu() : m_currentIndex(0) |
|
979 { |
|
980 for (int i = 0; i < 2; ++i) |
|
981 dialogActions[i] = addAction( QString("dialog %1").arg(i), dialogs + i, SLOT(exec())); |
|
982 } |
|
983 |
|
984 |
|
985 void activateAction(int index) |
|
986 { |
|
987 m_currentIndex = index; |
|
988 popup(QPoint()); |
|
989 QTest::qWaitForWindowShown(this); |
|
990 setActiveAction(dialogActions[index]); |
|
991 QTimer::singleShot(500, this, SLOT(checkVisibility())); |
|
992 QTest::keyClick(this, Qt::Key_Enter); //activation |
|
993 } |
|
994 |
|
995 public slots: |
|
996 void activateLastAction() |
|
997 { |
|
998 activateAction(1); |
|
999 } |
|
1000 |
|
1001 void checkVisibility() |
|
1002 { |
|
1003 QTRY_VERIFY(dialogs[m_currentIndex].isVisible()); |
|
1004 if (m_currentIndex == 1) { |
|
1005 QApplication::closeAllWindows(); //this is the end of the test |
|
1006 } |
|
1007 } |
|
1008 |
|
1009 |
|
1010 private: |
|
1011 QAction *dialogActions[2]; |
|
1012 QDialog dialogs[2]; |
|
1013 int m_currentIndex; |
|
1014 }; |
|
1015 |
|
1016 void tst_QMenu::QTBUG_10735_crashWithDialog() |
|
1017 { |
|
1018 MyMenu menu; |
|
1019 |
|
1020 QTimer::singleShot(1000, &menu, SLOT(activateLastAction())); |
|
1021 menu.activateAction(0); |
|
1022 |
|
1023 } |
933 |
1024 |
934 |
1025 |
935 QTEST_MAIN(tst_QMenu) |
1026 QTEST_MAIN(tst_QMenu) |
936 #include "tst_qmenu.moc" |
1027 #include "tst_qmenu.moc" |