aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quicktemplates2/qquickdialog.cpp6
-rw-r--r--src/quicktemplates2/qquickmenu.cpp2
-rw-r--r--tests/auto/quickcontrols2/controls/data/tst_dialog.qml1
-rw-r--r--tests/auto/quickcontrols2/qquickmenu/tst_qquickmenu.cpp4
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()));