summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorThierry Bastian <thierry.bastian@nokia.com>2010-06-30 10:15:49 (GMT)
committerSamuli Piippo <samuli.piippo@digia.com>2011-06-09 10:06:25 (GMT)
commit1e6e8e3cf34d766f9076e04e5ca20c829a92df90 (patch)
tree6f0cb1496c0d372f91692369cc0cdc84abd8cdd1 /tests
parentc779d8e7a227d8c9253ca43987a69d6d74c58abd (diff)
downloadQt-1e6e8e3cf34d766f9076e04e5ca20c829a92df90.zip
Qt-1e6e8e3cf34d766f9076e04e5ca20c829a92df90.tar.gz
Qt-1e6e8e3cf34d766f9076e04e5ca20c829a92df90.tar.bz2
Fixed a crash in menubar with invisible actions
That would happen because the loop to find the next action when navigating with the keyboard was not good enough. Task-number: QTBUG-11823 (cherry picked from commit 8ea60a39a8c4661db505a6dc1342e524ec2e460c)
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qmenubar/tst_qmenubar.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp
index 2033bfa..35dc770 100644
--- a/tests/auto/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/qmenubar/tst_qmenubar.cpp
@@ -168,6 +168,7 @@ private slots:
void task256322_highlight();
void menubarSizeHint();
void taskQTBUG4965_escapeEaten();
+ void taskQTBUG11823_crashwithInvisibleActions();
#if defined(QT3_SUPPORT)
void indexBasedInsertion_data();
@@ -1690,6 +1691,34 @@ void tst_QMenuBar::taskQTBUG4965_escapeEaten()
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()
{