QMenu: Fix nested popup when keyboard shortcut is used
Task-number: QTBUG-20403 Change-Id: I2a5fe00dd16e9dc1ec0d742a8f48083fc2954996 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>bb10
parent
791eb399d2
commit
b6963f109a
|
|
@ -2722,7 +2722,7 @@ void QMenu::keyPressEvent(QKeyEvent *e)
|
|||
key_consumed = true;
|
||||
if(d->scroll)
|
||||
d->scrollMenu(nextAction, QMenuPrivate::QMenuScroller::ScrollCenter, false);
|
||||
d->setCurrentAction(nextAction, 20, QMenuPrivate::SelectedFromElsewhere, true);
|
||||
d->setCurrentAction(nextAction, 0, QMenuPrivate::SelectedFromElsewhere, true);
|
||||
if (!nextAction->menu() && activateAction) {
|
||||
d->setSyncAction();
|
||||
d->activateAction(nextAction, QAction::Trigger);
|
||||
|
|
|
|||
|
|
@ -101,6 +101,7 @@ private slots:
|
|||
void pushButtonPopulateOnAboutToShow();
|
||||
void QTBUG7907_submenus_autoselect();
|
||||
void QTBUG7411_submenus_activate();
|
||||
void QTBUG20403_nested_popup_on_shortcut_trigger();
|
||||
void QTBUG_10735_crashWithDialog();
|
||||
protected slots:
|
||||
void onActivated(QAction*);
|
||||
|
|
@ -895,6 +896,22 @@ void tst_QMenu::QTBUG7411_submenus_activate()
|
|||
QTRY_VERIFY(sub1.isVisible());
|
||||
}
|
||||
|
||||
void tst_QMenu::QTBUG20403_nested_popup_on_shortcut_trigger()
|
||||
{
|
||||
QMenu menu("Test Menu");
|
||||
QMenu sub1("&sub1");
|
||||
QMenu subsub1("&subsub1");
|
||||
subsub1.addAction("foo");
|
||||
sub1.addMenu(&subsub1);
|
||||
menu.addMenu(&sub1);
|
||||
menu.show();
|
||||
QVERIFY(QTest::qWaitForWindowExposed(&menu));
|
||||
QTest::keyPress(&menu, Qt::Key_S);
|
||||
QTest::qWait(100); // 20ms delay with previous behavior
|
||||
QTRY_VERIFY(sub1.isVisible());
|
||||
QVERIFY(!subsub1.isVisible());
|
||||
}
|
||||
|
||||
class MyMenu : public QMenu
|
||||
{
|
||||
Q_OBJECT
|
||||
|
|
|
|||
Loading…
Reference in New Issue