From 31b35f0a353d0b150e31580b7e51ea5c6790d72c Mon Sep 17 00:00:00 2001 From: David Rowe Date: Wed, 12 Oct 2016 09:43:33 +1300 Subject: [PATCH] Only raise keyboard if in HMD display mode --- interface/resources/qml/AddressBarDialog.qml | 11 ++++++---- interface/resources/qml/ToolWindow.qml | 4 ++++ .../qml/dialogs/CustomQueryDialog.qml | 10 ++++++---- .../resources/qml/dialogs/FileDialog.qml | 9 ++++++--- .../resources/qml/dialogs/QueryDialog.qml | 10 ++++++---- .../qml/dialogs/preferences/AvatarBrowser.qml | 7 ++++++- .../qml/hifi/dialogs/AttachmentsDialog.qml | 4 ++-- .../qml/hifi/dialogs/ModelBrowserDialog.qml | 2 +- .../resources/qml/windows/ScrollingWindow.qml | 20 ++++++++++++------- 9 files changed, 51 insertions(+), 26 deletions(-) diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml index 58af470dce..3f66729793 100644 --- a/interface/resources/qml/AddressBarDialog.qml +++ b/interface/resources/qml/AddressBarDialog.qml @@ -34,7 +34,10 @@ Window { width: addressBarDialog.implicitWidth height: addressBarDialog.implicitHeight - onShownChanged: addressBarDialog.observeShownChanged(shown); + onShownChanged: { + addressBarDialog.keyboardEnabled = HMD.active; + addressBarDialog.observeShownChanged(shown); + } Component.onCompleted: { root.parentChanged.connect(center); center(); @@ -70,11 +73,12 @@ Window { AddressBarDialog { id: addressBarDialog + property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false implicitWidth: backgroundImage.width - implicitHeight: backgroundImage.height + (keyboardRaised ? keyboard.raisedHeight : 0) + implicitHeight: backgroundImage.height + ((keyboardEnabled && keyboardRaised) ? keyboard.raisedHeight : 0) // The buttons have their button state changed on hover, so we have to manually fix them up here onBackEnabledChanged: backArrow.buttonState = addressBarDialog.backEnabled ? 1 : 0; @@ -277,7 +281,7 @@ Window { HifiControls.Keyboard { id: keyboard - raised: parent.keyboardRaised + raised: parent.keyboardEnabled && parent.keyboardRaised numeric: parent.punctuationMode anchors { left: parent.left @@ -285,7 +289,6 @@ Window { bottom: parent.bottom } } - } function getRequest(url, cb) { // cb(error, responseOfCorrectContentType) of url. General for 'get' text/html/json, but without redirects. diff --git a/interface/resources/qml/ToolWindow.qml b/interface/resources/qml/ToolWindow.qml index 68c8099970..9c0b0a8c1a 100644 --- a/interface/resources/qml/ToolWindow.qml +++ b/interface/resources/qml/ToolWindow.qml @@ -42,6 +42,10 @@ ScrollingWindow { } } + onShownChanged: { + keyboardEnabled = HMD.active; + } + Settings { category: "ToolWindow.Position" property alias x: toolWindow.x diff --git a/interface/resources/qml/dialogs/CustomQueryDialog.qml b/interface/resources/qml/dialogs/CustomQueryDialog.qml index 788f1835d9..0cc2a8e002 100644 --- a/interface/resources/qml/dialogs/CustomQueryDialog.qml +++ b/interface/resources/qml/dialogs/CustomQueryDialog.qml @@ -22,7 +22,7 @@ ModalWindow { implicitWidth: 640; implicitHeight: 320; visible: true; - keyboardEnabled: false // Disable ModalWindow's keyboard. + keyboardOverride: true // Disable ModalWindow's keyboard. signal selected(var result); signal canceled(); @@ -51,6 +51,7 @@ ModalWindow { } } + property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false onKeyboardRaisedChanged: d.resize(); @@ -116,7 +117,7 @@ ModalWindow { var targetHeight = (textField.visible ? textField.controlHeight + hifi.dimensions.contentSpacing.y : 0) + (extraInputs.visible ? extraInputs.height + hifi.dimensions.contentSpacing.y : 0) + (buttons.height + 3 * hifi.dimensions.contentSpacing.y) + - (root.keyboardRaised ? (keyboard.raisedHeight + hifi.dimensions.contentSpacing.y) : 0); + ((keyboardEnabled && keyboardRaised) ? (keyboard.raisedHeight + hifi.dimensions.contentSpacing.y) : 0); root.width = (targetWidth < d.minWidth) ? d.minWidth : ((targetWidth > d.maxWdith) ? d.maxWidth : targetWidth); root.height = (targetHeight < d.minHeight) ? d.minHeight : ((targetHeight > d.maxHeight) ? @@ -155,13 +156,13 @@ ModalWindow { Keyboard { id: keyboard - raised: keyboardRaised + raised: keyboardEnabled && keyboardRaised numeric: punctuationMode anchors { left: parent.left right: parent.right bottom: parent.bottom - bottomMargin: keyboardRaised ? hifi.dimensions.contentSpacing.y : 0 + bottomMargin: raised ? hifi.dimensions.contentSpacing.y : 0 } } } @@ -312,6 +313,7 @@ ModalWindow { } Component.onCompleted: { + keyboardEnabled = HMD.active; updateIcon(); d.resize(); textField.forceActiveFocus(); diff --git a/interface/resources/qml/dialogs/FileDialog.qml b/interface/resources/qml/dialogs/FileDialog.qml index 8cbb78bc61..648d3a475d 100644 --- a/interface/resources/qml/dialogs/FileDialog.qml +++ b/interface/resources/qml/dialogs/FileDialog.qml @@ -27,7 +27,7 @@ ModalWindow { id: root resizable: true implicitWidth: 480 - implicitHeight: 360 + (fileDialogItem.keyboardRaised ? keyboard.raisedHeight + hifi.dimensions.contentSpacing.y : 0) + implicitHeight: 360 + (fileDialogItem.keyboardEnabled && fileDialogItem.keyboardRaised ? keyboard.raisedHeight + hifi.dimensions.contentSpacing.y : 0) minSize: Qt.vector2d(360, 240) draggable: true @@ -70,7 +70,9 @@ ModalWindow { signal canceled(); Component.onCompleted: { - console.log("Helper " + helper + " drives " + drives) + console.log("Helper " + helper + " drives " + drives); + + fileDialogItem.keyboardEnabled = HMD.active; // HACK: The following lines force the model to initialize properly such that the go-up button // works properly from the initial screen. @@ -106,6 +108,7 @@ ModalWindow { height: pane.height anchors.margins: 0 + property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false @@ -649,7 +652,7 @@ ModalWindow { Keyboard { id: keyboard - raised: parent.keyboardRaised + raised: parent.keyboardEnabled && parent.keyboardRaised numeric: parent.punctuationMode anchors { left: parent.left diff --git a/interface/resources/qml/dialogs/QueryDialog.qml b/interface/resources/qml/dialogs/QueryDialog.qml index c9330379d0..a922e6efc7 100644 --- a/interface/resources/qml/dialogs/QueryDialog.qml +++ b/interface/resources/qml/dialogs/QueryDialog.qml @@ -22,7 +22,7 @@ ModalWindow { implicitWidth: 640 implicitHeight: 320 visible: true - keyboardEnabled: false // Disable ModalWindow's keyboard. + keyboardOverride: true // Disable ModalWindow's keyboard. signal selected(var result); signal canceled(); @@ -46,6 +46,7 @@ ModalWindow { property int titleWidth: 0 onTitleWidthChanged: d.resize(); + property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false @@ -76,7 +77,7 @@ ModalWindow { var targetWidth = Math.max(titleWidth, pane.width) var targetHeight = (items ? comboBox.controlHeight : textResult.controlHeight) + 5 * hifi.dimensions.contentSpacing.y + buttons.height root.width = (targetWidth < d.minWidth) ? d.minWidth : ((targetWidth > d.maxWdith) ? d.maxWidth : targetWidth); - root.height = ((targetHeight < d.minHeight) ? d.minHeight : ((targetHeight > d.maxHeight) ? d.maxHeight : targetHeight)) + (root.keyboardRaised ? (keyboard.raisedHeight + 2 * hifi.dimensions.contentSpacing.y) : 0) + root.height = ((targetHeight < d.minHeight) ? d.minHeight : ((targetHeight > d.maxHeight) ? d.maxHeight : targetHeight)) + ((keyboardEnabled && keyboardRaised) ? (keyboard.raisedHeight + 2 * hifi.dimensions.contentSpacing.y) : 0) } } @@ -119,13 +120,13 @@ ModalWindow { Keyboard { id: keyboard - raised: keyboardRaised + raised: keyboardEnabled && keyboardRaised numeric: punctuationMode anchors { left: parent.left right: parent.right bottom: buttons.top - bottomMargin: root.keyboardRaised ? 2 * hifi.dimensions.contentSpacing.y : 0 + bottomMargin: raised ? 2 * hifi.dimensions.contentSpacing.y : 0 } } @@ -187,6 +188,7 @@ ModalWindow { } Component.onCompleted: { + keyboardEnabled = HMD.active; updateIcon(); d.resize(); textResult.forceActiveFocus(); diff --git a/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml b/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml index f174887856..652e02b6b9 100644 --- a/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml +++ b/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml @@ -29,6 +29,7 @@ Window { Item { anchors.fill: parent + property bool keyboardEnabled: false property bool keyboardRaised: true property bool punctuationMode: false @@ -76,7 +77,7 @@ Window { Keyboard { id: keyboard - raised: parent.keyboardRaised + raised: parent.keyboardEnabled && parent.keyboardRaised numeric: parent.punctuationMode anchors { left: parent.left @@ -84,5 +85,9 @@ Window { bottom: parent.bottom } } + + Component.onCompleted: { + keyboardEnabled = HMD.active; + } } } diff --git a/interface/resources/qml/hifi/dialogs/AttachmentsDialog.qml b/interface/resources/qml/hifi/dialogs/AttachmentsDialog.qml index cc9a570d47..27d225b58e 100644 --- a/interface/resources/qml/hifi/dialogs/AttachmentsDialog.qml +++ b/interface/resources/qml/hifi/dialogs/AttachmentsDialog.qml @@ -45,7 +45,7 @@ ScrollingWindow { Rectangle { width: parent.width - height: root.height - (keyboardRaised ? 200 : 0) + height: root.height - (keyboardEnabled && keyboardRaised ? 200 : 0) radius: 4 color: hifi.colors.baseGray @@ -210,7 +210,7 @@ ScrollingWindow { } onKeyboardRaisedChanged: { - if (keyboardRaised) { + if (keyboardEnabled && keyboardRaised) { // Scroll to item with focus if necessary. var footerHeight = newAttachmentButton.height + buttonRow.height + 3 * hifi.dimensions.contentSpacing.y; var delta = activator.mouseY diff --git a/interface/resources/qml/hifi/dialogs/ModelBrowserDialog.qml b/interface/resources/qml/hifi/dialogs/ModelBrowserDialog.qml index a5a254f605..7a63c0604c 100644 --- a/interface/resources/qml/hifi/dialogs/ModelBrowserDialog.qml +++ b/interface/resources/qml/hifi/dialogs/ModelBrowserDialog.qml @@ -30,7 +30,7 @@ ScrollingWindow { Rectangle { width: parent.width - height: root.height - (keyboardRaised ? 200 : 0) + height: root.height - (keyboardEnabled && keyboardRaised ? 200 : 0) radius: 4 color: hifi.colors.baseGray diff --git a/interface/resources/qml/windows/ScrollingWindow.qml b/interface/resources/qml/windows/ScrollingWindow.qml index 7f2f0cb187..7f0fa2a8e9 100644 --- a/interface/resources/qml/windows/ScrollingWindow.qml +++ b/interface/resources/qml/windows/ScrollingWindow.qml @@ -34,7 +34,8 @@ Window { property var footer: Item { } // Optional static footer at the bottom of the dialog. readonly property var footerContentHeight: footer.height > 0 ? (footer.height + 2 * hifi.dimensions.contentSpacing.y + 3) : 0 - property bool keyboardEnabled: true // Set false if derived control implements its own keyboard. + property bool keyboardOverride: false // Set true in derived control if it implements its own keyboard. + property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false @@ -132,7 +133,8 @@ Window { // Optional non-scrolling footer. id: footerPane - property alias keyboardEnabled: window.keyboardEnabled + // @@@@@@@ TODO: Are these aliases actually needed? + property alias keyboardOverride: window.keyboardOverride property alias keyboardRaised: window.keyboardRaised property alias punctuationMode: window.punctuationMode @@ -141,9 +143,9 @@ Window { bottom: parent.bottom } width: parent.contentWidth - height: footerContentHeight + (keyboardEnabled && keyboardRaised ? keyboard.height : 0) + height: footerContentHeight + (keyboard.enabled && keyboard.raised ? keyboard.height : 0) color: hifi.colors.baseGray - visible: footer.height > 0 || keyboardEnabled && keyboardRaised + visible: footer.height > 0 || keyboard.enabled && keyboard.raised Item { // Horizontal rule. @@ -182,8 +184,8 @@ Window { HiFiControls.Keyboard { id: keyboard - enabled: keyboardEnabled - raised: keyboardRaised + enabled: !keyboardOverride + raised: keyboardEnabled && keyboardRaised numeric: punctuationMode anchors { left: parent.left @@ -195,7 +197,7 @@ Window { } onKeyboardRaisedChanged: { - if (keyboardEnabled && keyboardRaised) { + if (keyboard.enabled && keyboard.raised) { var delta = activator.mouseY - (activator.height + activator.y - keyboard.raisedHeight - footerContentHeight - hifi.dimensions.controlLineHeight); @@ -208,4 +210,8 @@ Window { } } } + + Component.onCompleted: { + keyboardEnabled = HMD.active; + } }