aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorYuya Nishihara <yuya.nishihara@qt.io>2020-08-28 18:55:56 +0900
committerYuya Nishihara <yuya.nishihara@qt.io>2020-09-02 10:45:17 +0900
commitccc4f40946ccfc68d5580c9abfd9e2fb4565a608 (patch)
treefc339b73155a9ce7ee9eb11c6c53e1a01571e94a /tests/auto
parent6a2f7994e8255107954c11d48595dd171d0102b8 (diff)
Menu: Do not unblock parent shortcuts while menu popup is open
Otherwise &mnemonic shortcut in the active menu would be stolen by one of the ambiguous items shadowed by the active menu. Fixes: QTBUG-86276 Pick-to: 5.15 Change-Id: I5a1caea60da937fef409720f1ca11b99045ed4b8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/qquickmenubar/data/menubar.qml7
-rw-r--r--tests/auto/qquickmenubar/tst_qquickmenubar.cpp30
2 files changed, 37 insertions, 0 deletions
diff --git a/tests/auto/qquickmenubar/data/menubar.qml b/tests/auto/qquickmenubar/data/menubar.qml
index fcfe6c52..1436e66d 100644
--- a/tests/auto/qquickmenubar/data/menubar.qml
+++ b/tests/auto/qquickmenubar/data/menubar.qml
@@ -52,6 +52,8 @@ import QtQuick
import QtQuick.Controls
ApplicationWindow {
+ readonly property Button oopsButton: oopsButton
+
width: 400
height: 400
visible: true
@@ -103,4 +105,9 @@ ApplicationWindow {
}
}
}
+
+ Button {
+ id: oopsButton
+ text: "&Oops"
+ }
}
diff --git a/tests/auto/qquickmenubar/tst_qquickmenubar.cpp b/tests/auto/qquickmenubar/tst_qquickmenubar.cpp
index f18eabc7..5c75c838 100644
--- a/tests/auto/qquickmenubar/tst_qquickmenubar.cpp
+++ b/tests/auto/qquickmenubar/tst_qquickmenubar.cpp
@@ -41,6 +41,7 @@
#include "../shared/qtest_quickcontrols.h"
#include <QtQuickTemplates2/private/qquickapplicationwindow_p.h>
+#include <QtQuickTemplates2/private/qquickbutton_p.h>
#include <QtQuickTemplates2/private/qquickmenu_p.h>
#include <QtQuickTemplates2/private/qquickmenubar_p.h>
#include <QtQuickTemplates2/private/qquickmenubaritem_p.h>
@@ -435,6 +436,11 @@ void tst_qquickmenubar::mnemonics()
QQuickMenuBarItem *helpMenuBarItem = qobject_cast<QQuickMenuBarItem *>(helpMenuBarMenu->parentItem());
QVERIFY(fileMenuBarItem && editMenuBarItem && viewMenuBarItem && helpMenuBarItem);
+ QQuickButton *oopsButton = window->property("oopsButton").value<QQuickButton *>();
+ QVERIFY(oopsButton);
+ QSignalSpy oopsButtonSpy(oopsButton, &QQuickButton::clicked);
+ QVERIFY(oopsButtonSpy.isValid());
+
// trigger a menubar item to open a menu
keySim.press(Qt::Key_Alt);
keySim.click(Qt::Key_E); // "&Edit"
@@ -514,6 +520,30 @@ void tst_qquickmenubar::mnemonics()
QTRY_VERIFY(!viewMenuBarMenu->isVisible());
QTRY_VERIFY(!alignmentSubMenu->isVisible());
QTRY_VERIFY(!verticalSubMenu->isVisible());
+
+ // trigger a menubar item to open a menu, leave Alt pressed
+ keySim.press(Qt::Key_Alt);
+ keySim.click(Qt::Key_F); // "&File"
+ QVERIFY(fileMenuBarItem->isHighlighted());
+ QVERIFY(fileMenuBarMenu->isVisible());
+ QTRY_VERIFY(fileMenuBarMenu->isOpened());
+ QVERIFY(fileMenuBarMenu->hasActiveFocus());
+
+ // trigger a menu item to close the menu, which shouldn't trigger a button
+ // action behind the menu (QTBUG-86276)
+ QCOMPARE(oopsButtonSpy.count(), 0);
+ keySim.click(Qt::Key_O); // "&Open..."
+ keySim.release(Qt::Key_Alt);
+ QVERIFY(!fileMenuBarItem->isHighlighted());
+ QVERIFY(!fileMenuBarMenu->isOpened());
+ QTRY_VERIFY(!fileMenuBarMenu->isVisible());
+ QCOMPARE(oopsButtonSpy.count(), 0);
+
+ // trigger a button action while menu is closed
+ keySim.press(Qt::Key_Alt);
+ keySim.click(Qt::Key_O); // "&Oops"
+ keySim.release(Qt::Key_Alt);
+ QCOMPARE(oopsButtonSpy.count(), 1);
}
void tst_qquickmenubar::addRemove()