diff options
-rw-r--r-- | src/quicktemplates2/qquickdialog.cpp | 6 | ||||
-rw-r--r-- | src/quicktemplates2/qquickmenu.cpp | 2 | ||||
-rw-r--r-- | tests/auto/quickcontrols2/controls/data/tst_dialog.qml | 1 | ||||
-rw-r--r-- | tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp | 4 |
4 files changed, 11 insertions, 2 deletions
diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp index 0ec620ecd9..5023fe0a81 100644 --- a/src/quicktemplates2/qquickdialog.cpp +++ b/src/quicktemplates2/qquickdialog.cpp @@ -61,6 +61,8 @@ QT_BEGIN_NAMESPACE \image qtquickcontrols2-page-wireframe.png + By default, Dialogs have \l focus. + \section1 Dialog Title and Buttons Dialog's \l title is displayed by a style-specific title bar that is assigned @@ -203,6 +205,10 @@ QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent) : QQuickPopup(dd, parent) { Q_D(QQuickDialog); + + // Dialogs should get active focus when opened so that e.g. Cancel closes them. + setFocus(true); + QObject::connect(d->popupItem, &QQuickPopupItem::titleChanged, this, &QQuickDialog::titleChanged); QObject::connect(d->popupItem, &QQuickPopupItem::headerChanged, this, &QQuickDialog::headerChanged); QObject::connect(d->popupItem, &QQuickPopupItem::footerChanged, this, &QQuickDialog::footerChanged); diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp index 6b4f3fafce..a4a7835e50 100644 --- a/src/quicktemplates2/qquickmenu.cpp +++ b/src/quicktemplates2/qquickmenu.cpp @@ -196,7 +196,7 @@ static const int SUBMENU_DELAY = 225; will be \c true. For more information, see \l {Keyboard Focus in Qt Quick}. - The default value is \c false. + The default value is \c true. \sa {Popup::}{activeFocus} */ diff --git a/tests/auto/quickcontrols2/controls/data/tst_dialog.qml b/tests/auto/quickcontrols2/controls/data/tst_dialog.qml index b227d82e1b..448fd49ca2 100644 --- a/tests/auto/quickcontrols2/controls/data/tst_dialog.qml +++ b/tests/auto/quickcontrols2/controls/data/tst_dialog.qml @@ -95,6 +95,7 @@ TestCase { verify(control.header) verify(control.footer) compare(control.standardButtons, 0) + verify(control.focus) } function test_accept() { diff --git a/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp b/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp index 9806eff7c3..77c665f977 100644 --- a/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp +++ b/tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp @@ -117,6 +117,7 @@ void tst_QQuickMenu::defaults() QQuickMenu *emptyMenu = helper.appWindow->property("emptyMenu").value<QQuickMenu*>(); QCOMPARE(emptyMenu->isVisible(), false); + QVERIFY(emptyMenu->hasFocus()); QCOMPARE(emptyMenu->currentIndex(), -1); QCOMPARE(emptyMenu->contentItem()->property("currentIndex"), QVariant(-1)); QCOMPARE(emptyMenu->count(), 0); @@ -304,10 +305,11 @@ void tst_QQuickMenu::contextMenuKeyboard() QVERIFY(firstItem); QSignalSpy visibleSpy(menu, SIGNAL(visibleChanged())); - menu->setFocus(true); + QVERIFY(menu->hasFocus()); menu->open(); QCOMPARE(visibleSpy.count(), 1); QVERIFY(menu->isVisible()); + QVERIFY(menu->hasActiveFocus()); QQuickOverlay *overlay = window->property("overlay").value<QQuickOverlay*>(); QVERIFY(overlay); QVERIFY(overlay->childItems().contains(menu->contentItem()->parentItem())); |