diff options
author | Thierry Bastian <thierry.bastian@nokia.com> | 2010-06-30 10:15:49 (GMT) |
---|---|---|
committer | Thierry Bastian <thierry.bastian@nokia.com> | 2010-06-30 10:15:49 (GMT) |
commit | 8ea60a39a8c4661db505a6dc1342e524ec2e460c (patch) | |
tree | cc8824e9dd8178908918cd6a0e5ceb332f55168b /tests/auto | |
parent | a377ae6a629051b9c06b32a993ca98be43f8c5fa (diff) | |
download | Qt-8ea60a39a8c4661db505a6dc1342e524ec2e460c.zip Qt-8ea60a39a8c4661db505a6dc1342e524ec2e460c.tar.gz Qt-8ea60a39a8c4661db505a6dc1342e524ec2e460c.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
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qmenubar/tst_qmenubar.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/auto/qmenubar/tst_qmenubar.cpp b/tests/auto/qmenubar/tst_qmenubar.cpp index 4cb63a1..cc9fb0c 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() { |