diff --git a/app/gui/NavigableDialog.qml b/app/gui/NavigableDialog.qml index e633acaf..5cf7a55d 100644 --- a/app/gui/NavigableDialog.qml +++ b/app/gui/NavigableDialog.qml @@ -2,27 +2,16 @@ import QtQuick 2.0 import QtQuick.Controls 2.2 Dialog { - property Item originalFocusItem - parent: overlay x: Math.round((parent.width - width) / 2) y: Math.round((parent.height - height) / 2) - onAboutToShow: { - originalFocusItem = window.activeFocusItem - } - - onOpened: { - // Force focus on the dialog to ensure keyboard navigation works - forceActiveFocus() - } - - onClosed: { + onAboutToHide: { // We must force focus back to the last item for platforms without // support for more than one active window like Steam Link. If // we don't, gamepad and keyboard navigation will break after a // dialog appears. - originalFocusItem.forceActiveFocus() + stackView.forceActiveFocus() } } diff --git a/app/gui/NavigableMessageDialog.qml b/app/gui/NavigableMessageDialog.qml index fd3a578d..d6b7ea64 100644 --- a/app/gui/NavigableMessageDialog.qml +++ b/app/gui/NavigableMessageDialog.qml @@ -7,11 +7,16 @@ import SystemProperties 1.0 NavigableDialog { id: dialog - property alias text: dialogTextControl.dialogText + property alias text: dialogLabel.dialogText property string helpText property string helpUrl : "https://github.com/moonlight-stream/moonlight-docs/wiki/Troubleshooting" + onOpened: { + // Force keyboard focus on the label so keyboard navigation works + dialogLabel.forceActiveFocus() + } + RowLayout { spacing: 10 @@ -29,10 +34,9 @@ NavigableDialog { Label { property string dialogText - id: dialogTextControl + id: dialogLabel text: dialogText + (SystemProperties.hasBrowser ? (" " + helpText) : "") wrapMode: Text.WordWrap - focus: true // Cap the width so the dialog doesn't grow horizontally forever. This // will cause word wrap to kick in. diff --git a/app/gui/main.qml b/app/gui/main.qml index 6869b6c9..22fa9a5e 100644 --- a/app/gui/main.qml +++ b/app/gui/main.qml @@ -424,6 +424,11 @@ ApplicationWindow { standardButtons: Dialog.Ok | Dialog.Cancel + onOpened: { + // Force keyboard focus on the textbox so keyboard navigation works + editText.forceActiveFocus() + } + onAccepted: { if (editText.text) { ComputerManager.addNewHost(editText.text, false)