tests/auto/qmenubar/tst_qmenubar.cpp
changeset 33 3e2da88830cd
parent 18 2f34d5167611
--- a/tests/auto/qmenubar/tst_qmenubar.cpp	Tue Jul 06 15:10:48 2010 +0300
+++ b/tests/auto/qmenubar/tst_qmenubar.cpp	Wed Aug 18 10:37:55 2010 +0300
@@ -168,6 +168,7 @@
     void task256322_highlight();
     void menubarSizeHint();
     void taskQTBUG4965_escapeEaten();
+    void taskQTBUG11823_crashwithInvisibleActions();
 
 #if defined(QT3_SUPPORT)
     void indexBasedInsertion_data();
@@ -1690,6 +1691,34 @@
     QTRY_VERIFY(!menubar.isVisible());
 }
 
+void tst_QMenuBar::taskQTBUG11823_crashwithInvisibleActions()
+{
+    QMenuBar menubar;
+    menubar.setNativeMenuBar(false); //we can't check the geometry of native menubars
+
+    QAction * m = menubar.addAction( "&m" );
+    QAction * a = menubar.addAction( "&a" );
+
+    menubar.show();
+    QApplication::setActiveWindow(&menubar);
+    QTest::qWaitForWindowShown(&menubar);
+    menubar.setActiveAction(m);
+    QCOMPARE(menubar.activeAction(), m);
+    QTest::keyClick(0, Qt::Key_Right);
+    QCOMPARE(menubar.activeAction(), a);
+    QTest::keyClick(0, Qt::Key_Right);
+    QCOMPARE(menubar.activeAction(), m);
+    a->setVisible(false);
+
+    menubar.setActiveAction(m);
+    QCOMPARE(menubar.activeAction(), m); //the active action shouldn't have changed
+
+    //it used to crash here because the action is invisible
+    QTest::keyClick(0, Qt::Key_Right);
+    QCOMPARE(menubar.activeAction(), m); //the active action shouldn't have changed
+}
+
+
 #if defined(QT3_SUPPORT)
 void tst_QMenuBar::indexBasedInsertion_data()
 {