Fix focus issues after dismissal of consecutive dialogs (like Add PC -> Add PC error)

This commit is contained in:
Cameron Gutman 2019-03-31 19:32:17 -07:00
commit 0aa87aacc6
3 changed files with 14 additions and 16 deletions

View file

@ -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()
}
}

View file

@ -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.

View file

@ -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)