diff --git a/interface/resources/html/raiseAndLowerKeyboard.js b/interface/resources/html/raiseAndLowerKeyboard.js
index aeca4dc112..3897c9ff3f 100644
--- a/interface/resources/html/raiseAndLowerKeyboard.js
+++ b/interface/resources/html/raiseAndLowerKeyboard.js
@@ -11,6 +11,7 @@
var POLL_FREQUENCY = 500; // ms
var MAX_WARNINGS = 3;
var numWarnings = 0;
+ var isWindowFocused = true;
var isKeyboardRaised = false;
var isNumericKeyboard = false;
var KEYBOARD_HEIGHT = 200;
@@ -38,15 +39,15 @@
var keyboardRaised = shouldRaiseKeyboard();
var numericKeyboard = shouldSetNumeric();
- if (keyboardRaised !== isKeyboardRaised || numericKeyboard !== isNumericKeyboard) {
+ if (isWindowFocused && (keyboardRaised !== isKeyboardRaised || numericKeyboard !== isNumericKeyboard)) {
- if (typeof EventBridge !== "undefined") {
+ if (typeof EventBridge !== "undefined" && EventBridge !== null) {
EventBridge.emitWebEvent(
keyboardRaised ? ("_RAISE_KEYBOARD" + (numericKeyboard ? "_NUMERIC" : "")) : "_LOWER_KEYBOARD"
);
} else {
if (numWarnings < MAX_WARNINGS) {
- console.log("WARNING: no global EventBridge object found");
+ console.log("WARNING: No global EventBridge object found");
numWarnings++;
}
}
@@ -65,4 +66,14 @@
isNumericKeyboard = numericKeyboard;
}
}, POLL_FREQUENCY);
+
+ window.addEventListener("focus", function () {
+ isWindowFocused = true;
+ });
+
+ window.addEventListener("blur", function () {
+ isWindowFocused = false;
+ isKeyboardRaised = false;
+ isNumericKeyboard = false;
+ });
})();
diff --git a/interface/resources/qml/AddressBarDialog.qml b/interface/resources/qml/AddressBarDialog.qml
index d5a37d1a21..bbab0ea32a 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();
@@ -62,7 +65,6 @@ Window {
clearAddressLineTimer.start();
}
property var allStories: [];
- property int keyboardHeight: 200;
property int cardWidth: 200;
property int cardHeight: 152;
property string metaverseBase: addressBarDialog.metaverseServerUrl + "/api/v1/";
@@ -71,10 +73,13 @@ Window {
AddressBarDialog {
id: addressBarDialog
+ property bool keyboardEnabled: false
+ property bool keyboardRaised: false
property bool punctuationMode: false
implicitWidth: backgroundImage.width
- implicitHeight: backgroundImage.height + keyboardHeight + cardHeight - 25; // fudge to make header reasonable
+ implicitHeight: backgroundImage.height + (keyboardEnabled ? keyboard.raisedHeight + 2 * hifi.layout.spacing : 0)
+ + cardHeight - 36 // Fudge to reduce bottom margin.
// 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;
@@ -93,7 +98,7 @@ Window {
spacing: hifi.layout.spacing;
clip: true;
anchors {
- bottom: backgroundImage.top;
+ top: parent.top
horizontalCenter: backgroundImage.horizontalCenter
}
model: suggestions;
@@ -134,9 +139,9 @@ Window {
width: 576 * root.scale
height: 80 * root.scale
anchors {
- verticalCenter: parent.verticalCenter;
- verticalCenterOffset: -15; // fudge to keep header reasonable and keep us under Card
+ top: scroll.bottom
}
+
property int inputAreaHeight: 56.0 * root.scale // Height of the background's input area
property int inputAreaStep: (height - inputAreaHeight) / 2
@@ -279,33 +284,15 @@ Window {
}
}
- // virtual keyboard, letters
HifiControls.Keyboard {
- id: keyboard1
- y: parent.height
- height: keyboardHeight
- visible: !parent.punctuationMode
- enabled: !parent.punctuationMode
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.top: backgroundImage.bottom
- anchors.bottomMargin: 0
- }
-
- HifiControls.KeyboardPunctuation {
- id: keyboard2
- y: parent.height
- height: keyboardHeight
- visible: parent.punctuationMode
- enabled: parent.punctuationMode
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.top: backgroundImage.bottom
- anchors.bottomMargin: 0
+ id: keyboard
+ raised: parent.keyboardEnabled // Ignore keyboardRaised; keep keyboard raised if enabled (i.e., in HMD).
+ numeric: parent.punctuationMode
+ anchors {
+ top: backgroundImage.bottom
+ left: parent.left
+ right: parent.right
+ }
}
}
diff --git a/interface/resources/qml/Browser.qml b/interface/resources/qml/Browser.qml
index b258dadae4..869c0556fb 100644
--- a/interface/resources/qml/Browser.qml
+++ b/interface/resources/qml/Browser.qml
@@ -31,13 +31,6 @@ ScrollingWindow {
addressBar.text = webview.url
}
- onParentChanged: {
- if (visible) {
- addressBar.forceActiveFocus();
- addressBar.selectAll()
- }
- }
-
function showPermissionsBar(){
permissionsContainer.visible=true;
}
diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml
index 1f84024e15..08895ecaa1 100644
--- a/interface/resources/qml/LoginDialog.qml
+++ b/interface/resources/qml/LoginDialog.qml
@@ -33,6 +33,8 @@ ModalWindow {
property string title: ""
property int titleWidth: 0
+ keyboardOverride: true // Disable ModalWindow's keyboard.
+
LoginDialog {
id: loginDialog
diff --git a/interface/resources/qml/LoginDialog/LinkAccountBody.qml b/interface/resources/qml/LoginDialog/LinkAccountBody.qml
index debd40a67b..e1d7a639da 100644
--- a/interface/resources/qml/LoginDialog/LinkAccountBody.qml
+++ b/interface/resources/qml/LoginDialog/LinkAccountBody.qml
@@ -27,6 +27,7 @@ Item {
loginDialog.login(usernameField.text, passwordField.text)
}
+ property bool keyboardEnabled: false
property bool keyboardRaised: false
property bool punctuationMode: false
@@ -46,7 +47,7 @@ Item {
root.width = Math.max(d.minWidth, Math.min(d.maxWidth, targetWidth));
root.height = Math.max(d.minHeight, Math.min(d.maxHeight, targetHeight))
- + (linkAccountBody.keyboardRaised ? (200 + 2 * hifi.dimensions.contentSpacing.y) : hifi.dimensions.contentSpacing.y);
+ + (keyboardEnabled && keyboardRaised ? (200 + 2 * hifi.dimensions.contentSpacing.y) : hifi.dimensions.contentSpacing.y);
}
}
@@ -137,28 +138,13 @@ Item {
// Override ScrollingWindow's keyboard that would be at very bottom of dialog.
Keyboard {
- y: parent.keyboardRaised ? parent.height : 0
- height: parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardRaised && !parent.punctuationMode
- enabled: parent.keyboardRaised && !parent.punctuationMode
+ raised: keyboardEnabled && keyboardRaised
+ numeric: punctuationMode
anchors {
left: parent.left
right: parent.right
bottom: buttons.top
- bottomMargin: parent.keyboardRaised ? 2 * hifi.dimensions.contentSpacing.y : 0
- }
- }
-
- KeyboardPunctuation {
- y: parent.keyboardRaised ? parent.height : 0
- height: parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardRaised && parent.punctuationMode
- enabled: parent.keyboardRaised && parent.punctuationMode
- anchors {
- left: parent.left
- right: parent.right
- bottom: buttons.top
- bottomMargin: parent.keyboardRaised ? 2 * hifi.dimensions.contentSpacing.y : 0
+ bottomMargin: keyboardRaised ? 2 * hifi.dimensions.contentSpacing.y : 0
}
}
@@ -195,9 +181,10 @@ Item {
Component.onCompleted: {
root.title = qsTr("Sign Into High Fidelity")
root.iconText = "<"
+ keyboardEnabled = HMD.active;
d.resize();
- usernameField.forceActiveFocus()
+ usernameField.forceActiveFocus();
}
Connections {
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/controls-uit/BaseWebView.qml b/interface/resources/qml/controls-uit/BaseWebView.qml
index ef4764b08f..a5b724f113 100644
--- a/interface/resources/qml/controls-uit/BaseWebView.qml
+++ b/interface/resources/qml/controls-uit/BaseWebView.qml
@@ -25,8 +25,6 @@ WebEngineView {
});
}
-
-
// FIXME hack to get the URL with the auth token included. Remove when we move to Qt 5.6
Timer {
id: urlReplacementTimer
diff --git a/interface/resources/qml/controls-uit/Keyboard.qml b/interface/resources/qml/controls-uit/Keyboard.qml
index 1d957ce9cb..07488fe3e6 100644
--- a/interface/resources/qml/controls-uit/Keyboard.qml
+++ b/interface/resources/qml/controls-uit/Keyboard.qml
@@ -1,10 +1,28 @@
+//
+// FileDialog.qml
+//
+// Created by Anthony Thibault on 31 Oct 2016
+// Copyright 2016 High Fidelity, Inc.
+//
+// Distributed under the Apache License, Version 2.0.
+// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
+//
+
import QtQuick 2.0
Item {
id: keyboardBase
- height: 200
- property alias shiftKey: key27
+
+ property bool raised: false
+ property bool numeric: false
+
+ readonly property int raisedHeight: 200
+
+ height: enabled && raised ? raisedHeight : 0
+ visible: enabled && raised
+
property bool shiftMode: false
+ property bool numericShiftMode: false
function resetShiftMode(mode) {
shiftMode = mode;
@@ -37,8 +55,8 @@ Item {
function forEachKey(func) {
var i, j;
- for (i = 0; i < column1.children.length; i++) {
- var row = column1.children[i];
+ for (i = 0; i < columnAlpha.children.length; i++) {
+ var row = columnAlpha.children[i];
for (j = 0; j < row.children.length; j++) {
var key = row.children[j];
func(key);
@@ -48,10 +66,12 @@ Item {
onShiftModeChanged: {
forEachKey(function (key) {
- if (shiftMode) {
- key.glyph = keyboardBase.toUpper(key.glyph);
- } else {
- key.glyph = keyboardBase.toLower(key.glyph);
+ if (/[a-z]/i.test(key.glyph)) {
+ if (shiftMode) {
+ key.glyph = keyboardBase.toUpper(key.glyph);
+ } else {
+ key.glyph = keyboardBase.toLower(key.glyph);
+ }
}
});
}
@@ -97,265 +117,177 @@ Item {
anchors.bottomMargin: 0
Column {
- id: column1
+ id: columnAlpha
width: 480
height: 200
+ visible: !numeric
Row {
- id: row1
width: 480
height: 50
anchors.left: parent.left
- anchors.leftMargin: 0
+ anchors.leftMargin: 4
- Key {
- id: key1
- width: 44
- glyph: "q"
- }
-
- Key {
- id: key2
- width: 44
- glyph: "w"
- }
-
- Key {
- id: key3
- width: 44
- glyph: "e"
- }
-
- Key {
- id: key4
- width: 43
- glyph: "r"
- }
-
- Key {
- id: key5
- width: 43
- glyph: "t"
- }
-
- Key {
- id: key6
- width: 44
- glyph: "y"
- }
-
- Key {
- id: key7
- width: 44
- glyph: "u"
- }
-
- Key {
- id: key8
- width: 43
- glyph: "i"
- }
-
- Key {
- id: key9
- width: 42
- glyph: "o"
- }
-
- Key {
- id: key10
- width: 44
- glyph: "p"
- }
-
- Key {
- id: key28
- width: 45
- glyph: "←"
- }
+ Key { width: 43; glyph: "q"; }
+ Key { width: 43; glyph: "w"; }
+ Key { width: 43; glyph: "e"; }
+ Key { width: 43; glyph: "r"; }
+ Key { width: 43; glyph: "t"; }
+ Key { width: 43; glyph: "y"; }
+ Key { width: 43; glyph: "u"; }
+ Key { width: 43; glyph: "i"; }
+ Key { width: 43; glyph: "o"; }
+ Key { width: 43; glyph: "p"; }
+ Key { width: 43; glyph: "←"; }
}
Row {
- id: row2
width: 480
height: 50
anchors.left: parent.left
- anchors.leftMargin: 18
+ anchors.leftMargin: 20
- Key {
- id: key11
- width: 43
- }
-
- Key {
- id: key12
- width: 43
- glyph: "s"
- }
-
- Key {
- id: key13
- width: 43
- glyph: "d"
- }
-
- Key {
- id: key14
- width: 43
- glyph: "f"
- }
-
- Key {
- id: key15
- width: 43
- glyph: "g"
- }
-
- Key {
- id: key16
- width: 43
- glyph: "h"
- }
-
- Key {
- id: key17
- width: 43
- glyph: "j"
- }
-
- Key {
- id: key18
- width: 43
- glyph: "k"
- }
-
- Key {
- id: key19
- width: 43
- glyph: "l"
- }
-
- Key {
- id: key32
- width: 75
- glyph: "⏎"
- }
+ Key { width: 43; glyph: "a"; }
+ Key { width: 43; glyph: "s"; }
+ Key { width: 43; glyph: "d"; }
+ Key { width: 43; glyph: "f"; }
+ Key { width: 43; glyph: "g"; }
+ Key { width: 43; glyph: "h"; }
+ Key { width: 43; glyph: "j"; }
+ Key { width: 43; glyph: "k"; }
+ Key { width: 43; glyph: "l"; }
+ Key { width: 70; glyph: "⏎"; }
}
Row {
- id: row3
width: 480
height: 50
anchors.left: parent.left
- anchors.leftMargin: 0
+ anchors.leftMargin: 4
Key {
- id: key27
- width: 46
+ id: shiftKey
+ width: 43
glyph: "⇪"
toggle: true
- onToggledChanged: {
- shiftMode = toggled;
- }
+ onToggledChanged: shiftMode = toggled
}
-
- Key {
- id: key20
- width: 43
- glyph: "z"
- }
-
- Key {
- id: key21
- width: 43
- glyph: "x"
- }
-
- Key {
- id: key22
- width: 43
- glyph: "c"
- }
-
- Key {
- id: key23
- width: 43
- glyph: "v"
- }
-
- Key {
- id: key24
- width: 43
- glyph: "b"
- }
-
- Key {
- id: key25
- width: 43
- glyph: "n"
- }
-
- Key {
- id: key26
- width: 44
- glyph: "m"
- }
-
- Key {
- id: key31
- width: 43
- glyph: "_"
- }
-
- Key {
- id: key33
- width: 43
- glyph: "?"
- }
-
- Key {
- id: key36
- width: 46
- glyph: "/"
- }
-
+ Key { width: 43; glyph: "z"; }
+ Key { width: 43; glyph: "x"; }
+ Key { width: 43; glyph: "c"; }
+ Key { width: 43; glyph: "v"; }
+ Key { width: 43; glyph: "b"; }
+ Key { width: 43; glyph: "n"; }
+ Key { width: 43; glyph: "m"; }
+ Key { width: 43; glyph: "_"; }
+ Key { width: 43; glyph: "/"; }
+ Key { width: 43; glyph: "?"; }
}
Row {
- id: row4
width: 480
height: 50
anchors.left: parent.left
- anchors.leftMargin: 19
+ anchors.leftMargin: 4
Key {
- id: key30
- width: 89
- glyph: "&123"
- mouseArea.onClicked: {
- keyboardBase.parent.punctuationMode = true;
- }
+ width: 70
+ glyph: "123"
+ mouseArea.onClicked: keyboardBase.parent.punctuationMode = true
}
+ Key { width: 231; glyph: " "; }
+ Key { width: 43; glyph: ","; }
+ Key { width: 43; glyph: "."; }
+ Key { width: 43; glyph: "\u276C"; }
+ Key { width: 43; glyph: "\u276D"; }
+ }
+ }
+
+ Column {
+ id: columnNumeric
+ width: 480
+ height: 200
+ visible: numeric
+
+ Row {
+ width: 480
+ height: 50
+ anchors.left: parent.left
+ anchors.leftMargin: 4
+
+ Key { width: 43; glyph: "1"; }
+ Key { width: 43; glyph: "2"; }
+ Key { width: 43; glyph: "3"; }
+ Key { width: 43; glyph: "4"; }
+ Key { width: 43; glyph: "5"; }
+ Key { width: 43; glyph: "6"; }
+ Key { width: 43; glyph: "7"; }
+ Key { width: 43; glyph: "8"; }
+ Key { width: 43; glyph: "9"; }
+ Key { width: 43; glyph: "0"; }
+ Key { width: 43; glyph: "←"; }
+ }
+
+ Row {
+ width: 480
+ height: 50
+ anchors.left: parent.left
+ anchors.leftMargin: 4
+
+ Key { width: 43; glyph: "!"; }
+ Key { width: 43; glyph: "@"; }
+ Key { width: 43; glyph: "#"; }
+ Key { width: 43; glyph: "$"; }
+ Key { width: 43; glyph: "%"; }
+ Key { width: 43; glyph: "^"; }
+ Key { width: 43; glyph: "&"; }
+ Key { width: 43; glyph: "*"; }
+ Key { width: 43; glyph: "("; }
+ Key { width: 43; glyph: ")"; }
+ Key { width: 43; glyph: "⏎"; }
+ }
+
+ Row {
+ width: 480
+ height: 50
+ anchors.left: parent.left
+ anchors.leftMargin: 4
Key {
- id: key29
- width: 285
- glyph: " "
- }
-
- Key {
- id: key34
+ id: numericShiftKey
width: 43
- glyph: "⇦"
+ glyph: "\u21E8"
+ toggle: true
+ onToggledChanged: numericShiftMode = toggled
}
+ Key { width: 43; glyph: numericShiftMode ? "`" : "+"; }
+ Key { width: 43; glyph: numericShiftMode ? "~" : "-"; }
+ Key { width: 43; glyph: numericShiftMode ? "\u00A3" : "="; }
+ Key { width: 43; glyph: numericShiftMode ? "\u20AC" : ";"; }
+ Key { width: 43; glyph: numericShiftMode ? "\u00A5" : ":"; }
+ Key { width: 43; glyph: numericShiftMode ? "<" : "'"; }
+ Key { width: 43; glyph: numericShiftMode ? ">" : "\""; }
+ Key { width: 43; glyph: numericShiftMode ? "[" : "{"; }
+ Key { width: 43; glyph: numericShiftMode ? "]" : "}"; }
+ Key { width: 43; glyph: numericShiftMode ? "\\" : "|"; }
+ }
+
+ Row {
+ width: 480
+ height: 50
+ anchors.left: parent.left
+ anchors.leftMargin: 4
Key {
- id: key35
- x: 343
- width: 43
- glyph: "⇨"
+ width: 70
+ glyph: "abc"
+ mouseArea.onClicked: keyboardBase.parent.punctuationMode = false
}
-
+ Key { width: 231; glyph: " "; }
+ Key { width: 43; glyph: ","; }
+ Key { width: 43; glyph: "."; }
+ Key { width: 43; glyph: "\u276C"; }
+ Key { width: 43; glyph: "\u276D"; }
}
}
}
@@ -386,5 +318,4 @@ Item {
anchors.top: parent.top
anchors.topMargin: 0
}
-
}
diff --git a/interface/resources/qml/controls-uit/KeyboardPunctuation.qml b/interface/resources/qml/controls-uit/KeyboardPunctuation.qml
deleted file mode 100644
index 485468b46a..0000000000
--- a/interface/resources/qml/controls-uit/KeyboardPunctuation.qml
+++ /dev/null
@@ -1,324 +0,0 @@
-import QtQuick 2.0
-
-Item {
- id: keyboardBase
- height: 200
- Rectangle {
- id: leftRect
- y: 0
- height: 200
- color: "#252525"
- anchors.right: keyboardRect.left
- anchors.rightMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- }
-
- Rectangle {
- id: keyboardRect
- x: 206
- y: 0
- width: 480
- height: 200
- color: "#252525"
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
-
- Column {
- id: column1
- width: 480
- height: 200
-
- Row {
- id: row1
- width: 480
- height: 50
- anchors.left: parent.left
- anchors.leftMargin: 0
-
- Key {
- id: key1
- width: 43
- glyph: "1"
- }
-
- Key {
- id: key2
- width: 43
- glyph: "2"
- }
-
- Key {
- id: key3
- width: 43
- glyph: "3"
- }
-
- Key {
- id: key4
- width: 43
- glyph: "4"
- }
-
- Key {
- id: key5
- width: 43
- glyph: "5"
- }
-
- Key {
- id: key6
- width: 43
- glyph: "6"
- }
-
- Key {
- id: key7
- width: 43
- glyph: "7"
- }
-
- Key {
- id: key8
- width: 43
- glyph: "8"
- }
-
- Key {
- id: key9
- width: 43
- glyph: "9"
- }
-
- Key {
- id: key10
- width: 43
- glyph: "0"
- }
-
- Key {
- id: key28
- width: 50
- glyph: "←"
- }
- }
-
- Row {
- id: row2
- width: 480
- height: 50
- anchors.left: parent.left
- anchors.leftMargin: 0
-
- Key {
- id: key11
- width: 43
- glyph: "!"
- }
-
- Key {
- id: key12
- width: 43
- glyph: "@"
- }
-
- Key {
- id: key13
- width: 43
- glyph: "#"
- }
-
- Key {
- id: key14
- width: 43
- glyph: "$"
- }
-
- Key {
- id: key15
- width: 43
- glyph: "%"
- }
-
- Key {
- id: key16
- width: 43
- glyph: "^"
- }
-
- Key {
- id: key17
- width: 43
- glyph: "&"
- }
-
- Key {
- id: key18
- width: 43
- glyph: "*"
- }
-
- Key {
- id: key19
- width: 43
- glyph: "("
- }
-
- Key {
- id: key32
- width: 43
- glyph: ")"
- }
-
- Key {
- id: key37
- width: 50
- glyph: "⏎"
- }
- }
-
- Row {
- id: row3
- width: 480
- height: 50
- anchors.left: parent.left
- anchors.leftMargin: 4
-
- Key {
- id: key27
- width: 43
- glyph: "="
- }
-
- Key {
- id: key20
- width: 43
- glyph: "+"
- }
-
- Key {
- id: key21
- width: 43
- glyph: "-"
- }
-
- Key {
- id: key22
- width: 43
- glyph: ","
- }
-
- Key {
- id: key23
- width: 43
- glyph: "."
- }
-
- Key {
- id: key24
- width: 43
- glyph: ";"
- }
-
- Key {
- id: key25
- width: 43
- glyph: ":"
- }
-
- Key {
- id: key26
- width: 43
- glyph: "'"
- }
-
- Key {
- id: key31
- width: 43
- glyph: "\""
- }
-
- Key {
- id: key33
- width: 43
- glyph: "<"
- }
-
- Key {
- id: key36
- width: 43
- glyph: ">"
- }
-
- }
-
- Row {
- id: row4
- width: 480
- height: 50
- anchors.left: parent.left
- anchors.leftMargin: 19
-
- Key {
- id: key30
- width: 65
- glyph: "abc"
- mouseArea.onClicked: {
- keyboardBase.parent.punctuationMode = false
- }
- }
-
- Key {
- id: key29
- width: 285
- glyph: " "
- }
-
- Key {
- id: key34
- width: 43
- glyph: "⇦"
- }
-
- Key {
- id: key35
- x: 343
- width: 43
- glyph: "⇨"
- }
-
- }
- }
- }
-
- Rectangle {
- id: rightRect
- y: 280
- height: 200
- color: "#252525"
- border.width: 0
- anchors.left: keyboardRect.right
- anchors.leftMargin: 0
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
- }
-
- Rectangle {
- id: rectangle1
- color: "#ffffff"
- anchors.bottom: keyboardRect.top
- anchors.bottomMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.top: parent.top
- anchors.topMargin: 0
- }
-
-}
diff --git a/interface/resources/qml/controls-uit/Tree.qml b/interface/resources/qml/controls-uit/Tree.qml
index aa1d10f030..8bce092947 100644
--- a/interface/resources/qml/controls-uit/Tree.qml
+++ b/interface/resources/qml/controls-uit/Tree.qml
@@ -199,6 +199,11 @@ TreeView {
unfocusHelper.forceActiveFocus();
}
}
+
+ onReadOnlyChanged: {
+ // Have to explicily set keyboardRaised because automatic setting fails because readOnly is true at the time.
+ keyboardRaised = activeFocus;
+ }
}
}
}
diff --git a/interface/resources/qml/controls-uit/WebView.qml b/interface/resources/qml/controls-uit/WebView.qml
index 2ce007c42a..2895f36944 100644
--- a/interface/resources/qml/controls-uit/WebView.qml
+++ b/interface/resources/qml/controls-uit/WebView.qml
@@ -13,8 +13,9 @@ import "."
BaseWebView {
onNewViewRequested: {
- var component = Qt.createComponent("../Browser.qml");
- var newWindow = component.createObject(desktop);
- request.openIn(newWindow.webView)
+ // Load dialog via OffscreenUi so that JavaScript EventBridge is available.
+ var browser = OffscreenUi.load("Browser.qml");
+ request.openIn(browser.webView);
+ browser.webView.forceActiveFocus();
}
}
diff --git a/interface/resources/qml/controls/WebView.qml b/interface/resources/qml/controls/WebView.qml
index c3381ab824..1056a3b75e 100644
--- a/interface/resources/qml/controls/WebView.qml
+++ b/interface/resources/qml/controls/WebView.qml
@@ -6,9 +6,18 @@ import "../controls-uit" as HiFiControls
Item {
property alias url: root.url
property alias eventBridge: eventBridgeWrapper.eventBridge
+ property bool keyboardEnabled: true // FIXME - Keyboard HMD only: Default to false
property bool keyboardRaised: false
property bool punctuationMode: false
+ // FIXME - Keyboard HMD only: Make Interface either set keyboardRaised property directly in OffscreenQmlSurface
+ // or provide HMDinfo object to QML in RenderableWebEntityItem and do the following.
+ /*
+ onKeyboardRaisedChanged: {
+ keyboardEnabled = HMDinfo.active;
+ }
+ */
+
QtObject {
id: eventBridgeWrapper
WebChannel.id: "eventBridgeWrapper"
@@ -20,7 +29,7 @@ Item {
x: 0
y: 0
width: parent.width
- height: keyboardRaised ? parent.height - keyboard1.height : parent.height
+ height: keyboardEnabled && keyboardRaised ? parent.height - keyboard.height : parent.height
// creates a global EventBridge object.
WebEngineScript {
@@ -82,7 +91,7 @@ Item {
onLoadingChanged: {
keyboardRaised = false;
punctuationMode = false;
- keyboard1.resetShiftMode(false);
+ keyboard.resetShiftMode(false);
// Required to support clicking on "hifi://" links
if (WebEngineView.LoadStartedStatus == loadRequest.status) {
@@ -105,32 +114,15 @@ Item {
}
}
- // virtual keyboard, letters
HiFiControls.Keyboard {
- id: keyboard1
- y: keyboardRaised ? parent.height : 0
- height: keyboardRaised ? 200 : 0
- visible: keyboardRaised && !punctuationMode
- enabled: keyboardRaised && !punctuationMode
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
+ id: keyboard
+ raised: parent.keyboardEnabled && parent.keyboardRaised
+ numeric: parent.punctuationMode
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
+ }
}
- HiFiControls.KeyboardPunctuation {
- id: keyboard2
- y: keyboardRaised ? parent.height : 0
- height: keyboardRaised ? 200 : 0
- visible: keyboardRaised && punctuationMode
- enabled: keyboardRaised && punctuationMode
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 0
- }
}
diff --git a/interface/resources/qml/dialogs/CustomQueryDialog.qml b/interface/resources/qml/dialogs/CustomQueryDialog.qml
index 76d20f0e0a..97f55d087b 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 ? (200 + 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) ?
@@ -153,38 +154,15 @@ ModalWindow {
}
}
- Item {
+ Keyboard {
id: keyboard
-
- height: keyboardRaised ? 200 : 0
-
+ raised: keyboardEnabled && keyboardRaised
+ numeric: punctuationMode
anchors {
left: parent.left
right: parent.right
bottom: parent.bottom
- bottomMargin: keyboardRaised ? hifi.dimensions.contentSpacing.y : 0
- }
-
- Keyboard {
- id: keyboard1
- visible: keyboardRaised && !punctuationMode
- enabled: keyboardRaised && !punctuationMode
- anchors {
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- }
- }
-
- KeyboardPunctuation {
- id: keyboard2
- visible: keyboardRaised && punctuationMode
- enabled: keyboardRaised && punctuationMode
- anchors {
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- }
+ bottomMargin: raised ? hifi.dimensions.contentSpacing.y : 0
}
}
}
@@ -339,6 +317,7 @@ ModalWindow {
}
Component.onCompleted: {
+ keyboardEnabled = HMD.active;
updateIcon();
updateCheckbox();
d.resize();
diff --git a/interface/resources/qml/dialogs/FileDialog.qml b/interface/resources/qml/dialogs/FileDialog.qml
index 0942e728f9..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 ? 200 + 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
@@ -626,7 +629,7 @@ ModalWindow {
left: parent.left
right: selectionType.visible ? selectionType.left: parent.right
rightMargin: selectionType.visible ? hifi.dimensions.contentSpacing.x : 0
- bottom: keyboard1.top
+ bottom: keyboard.top
bottomMargin: hifi.dimensions.contentSpacing.y
}
readOnly: !root.saveDialog
@@ -648,25 +651,15 @@ ModalWindow {
}
Keyboard {
- id: keyboard1
- height: parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardRaised && !parent.punctuationMode
- enabled: visible
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.bottom: buttonRow.top
- anchors.bottomMargin: visible ? hifi.dimensions.contentSpacing.y : 0
- }
-
- KeyboardPunctuation {
- id: keyboard2
- height: parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardRaised && parent.punctuationMode
- enabled: visible
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.bottom: buttonRow.top
- anchors.bottomMargin: visible ? hifi.dimensions.contentSpacing.y : 0
+ id: keyboard
+ raised: parent.keyboardEnabled && parent.keyboardRaised
+ numeric: parent.punctuationMode
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: buttonRow.top
+ bottomMargin: visible ? hifi.dimensions.contentSpacing.y : 0
+ }
}
Row {
diff --git a/interface/resources/qml/dialogs/QueryDialog.qml b/interface/resources/qml/dialogs/QueryDialog.qml
index cf1b1e370a..a922e6efc7 100644
--- a/interface/resources/qml/dialogs/QueryDialog.qml
+++ b/interface/resources/qml/dialogs/QueryDialog.qml
@@ -22,6 +22,7 @@ ModalWindow {
implicitWidth: 640
implicitHeight: 320
visible: true
+ keyboardOverride: true // Disable ModalWindow's keyboard.
signal selected(var result);
signal canceled();
@@ -45,6 +46,12 @@ ModalWindow {
property int titleWidth: 0
onTitleWidthChanged: d.resize();
+ property bool keyboardEnabled: false
+ property bool keyboardRaised: false
+ property bool punctuationMode: false
+
+ onKeyboardRaisedChanged: d.resize();
+
function updateIcon() {
if (!root) {
return;
@@ -59,11 +66,6 @@ ModalWindow {
height: pane.height
anchors.margins: 0
- property bool keyboardRaised: false
- property bool punctuationMode: false
-
- onKeyboardRaisedChanged: d.resize();
-
QtObject {
id: d
readonly property int minWidth: 480
@@ -74,15 +76,15 @@ ModalWindow {
function resize() {
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)) + (modalWindowItem.keyboardRaised ? (200 + 2 * 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) ? d.maxHeight : targetHeight)) + ((keyboardEnabled && keyboardRaised) ? (keyboard.raisedHeight + 2 * hifi.dimensions.contentSpacing.y) : 0)
}
}
Item {
anchors {
top: parent.top
- bottom: keyboard1.top;
+ bottom: keyboard.top;
left: parent.left;
right: parent.right;
margins: 0
@@ -116,33 +118,16 @@ ModalWindow {
}
}
- // virtual keyboard, letters
Keyboard {
- id: keyboard1
- y: parent.keyboardRaised ? parent.height : 0
- height: parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardRaised && !parent.punctuationMode
- enabled: parent.keyboardRaised && !parent.punctuationMode
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.bottom: buttons.top
- anchors.bottomMargin: parent.keyboardRaised ? 2 * hifi.dimensions.contentSpacing.y : 0
- }
-
- KeyboardPunctuation {
- id: keyboard2
- y: parent.keyboardRaised ? parent.height : 0
- height: parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardRaised && parent.punctuationMode
- enabled: parent.keyboardRaised && parent.punctuationMode
- anchors.right: parent.right
- anchors.rightMargin: 0
- anchors.left: parent.left
- anchors.leftMargin: 0
- anchors.bottom: buttons.top
- anchors.bottomMargin: parent.keyboardRaised ? 2 * hifi.dimensions.contentSpacing.y : 0
+ id: keyboard
+ raised: keyboardEnabled && keyboardRaised
+ numeric: punctuationMode
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: buttons.top
+ bottomMargin: raised ? 2 * hifi.dimensions.contentSpacing.y : 0
+ }
}
Flow {
@@ -203,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 16d25b3c4c..652e02b6b9 100644
--- a/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml
+++ b/interface/resources/qml/dialogs/preferences/AvatarBrowser.qml
@@ -10,23 +10,84 @@
import QtQuick 2.5
import QtQuick.Controls 1.4
-import QtWebEngine 1.1
+import QtWebChannel 1.0
+import QtWebEngine 1.2
-import "../../windows" as Windows
-import "../../controls-uit" as Controls
+import "../../windows"
+import "../../controls-uit"
import "../../styles-uit"
-Windows.Window {
+Window {
id: root
HifiConstants { id: hifi }
width: 900; height: 700
resizable: true
modality: Qt.ApplicationModal
- Controls.WebView {
- id: webview
+ property alias eventBridge: eventBridgeWrapper.eventBridge
+
+ Item {
anchors.fill: parent
- url: "https://metaverse.highfidelity.com/marketplace?category=avatars"
- focus: true
+
+ property bool keyboardEnabled: false
+ property bool keyboardRaised: true
+ property bool punctuationMode: false
+
+ BaseWebView {
+ id: webview
+ url: "https://metaverse.highfidelity.com/marketplace?category=avatars"
+ focus: true
+
+ anchors {
+ top: parent.top
+ left: parent.left
+ right: parent.right
+ bottom: keyboard.top
+ }
+
+ property alias eventBridgeWrapper: eventBridgeWrapper
+
+ QtObject {
+ id: eventBridgeWrapper
+ WebChannel.id: "eventBridgeWrapper"
+ property var eventBridge;
+ }
+
+ webChannel.registeredObjects: [eventBridgeWrapper]
+
+ // Create a global EventBridge object for raiseAndLowerKeyboard.
+ WebEngineScript {
+ id: createGlobalEventBridge
+ sourceCode: eventBridgeJavaScriptToInject
+ injectionPoint: WebEngineScript.DocumentCreation
+ worldId: WebEngineScript.MainWorld
+ }
+
+ // Detect when may want to raise and lower keyboard.
+ WebEngineScript {
+ id: raiseAndLowerKeyboard
+ injectionPoint: WebEngineScript.Deferred
+ sourceUrl: resourceDirectoryUrl + "html/raiseAndLowerKeyboard.js"
+ worldId: WebEngineScript.MainWorld
+ }
+
+ userScripts: [ createGlobalEventBridge, raiseAndLowerKeyboard ]
+
+ }
+
+ Keyboard {
+ id: keyboard
+ raised: parent.keyboardEnabled && parent.keyboardRaised
+ numeric: parent.punctuationMode
+ anchors {
+ left: parent.left
+ right: parent.right
+ bottom: parent.bottom
+ }
+ }
+
+ Component.onCompleted: {
+ keyboardEnabled = HMD.active;
+ }
}
}
diff --git a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml
index 8f05ca4ffe..0c5c5bf630 100644
--- a/interface/resources/qml/dialogs/preferences/AvatarPreference.qml
+++ b/interface/resources/qml/dialogs/preferences/AvatarPreference.qml
@@ -74,11 +74,6 @@ Preference {
colorScheme: hifi.colorSchemes.dark
}
- Component {
- id: avatarBrowserBuilder;
- AvatarBrowser { }
- }
-
Button {
id: button
text: "Browse"
@@ -87,12 +82,12 @@ Preference {
verticalCenter: dataTextField.verticalCenter
}
onClicked: {
- root.browser = avatarBrowserBuilder.createObject(desktop);
+ // Load dialog via OffscreenUi so that JavaScript EventBridge is available.
+ root.browser = OffscreenUi.load("dialogs/preferences/AvatarBrowser.qml");
root.browser.windowDestroyed.connect(function(){
root.browser = null;
- })
+ });
}
}
-
}
}
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 ce4bd45cff..1f9b59d2b4 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,7 @@ Window {
// Optional non-scrolling footer.
id: footerPane
- property alias keyboardEnabled: window.keyboardEnabled
+ property alias keyboardOverride: window.keyboardOverride
property alias keyboardRaised: window.keyboardRaised
property alias punctuationMode: window.punctuationMode
@@ -141,9 +142,9 @@ Window {
bottom: parent.bottom
}
width: parent.contentWidth
- height: footerContentHeight + (keyboardEnabled && keyboardRaised ? 200 : 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.
@@ -181,22 +182,10 @@ Window {
}
HiFiControls.Keyboard {
- id: keyboard1
- height: parent.keyboardEnabled && parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardEnabled && parent.keyboardRaised && !parent.punctuationMode
- enabled: parent.keyboardEnabled && parent.keyboardRaised && !parent.punctuationMode
- anchors {
- left: parent.left
- right: parent.right
- bottom: parent.bottom
- }
- }
-
- HiFiControls.KeyboardPunctuation {
- id: keyboard2
- height: parent.keyboardEnabled && parent.keyboardRaised ? 200 : 0
- visible: parent.keyboardEnabled && parent.keyboardRaised && parent.punctuationMode
- enabled: parent.keyboardEnabled && parent.keyboardRaised && parent.punctuationMode
+ id: keyboard
+ enabled: !keyboardOverride
+ raised: keyboardEnabled && keyboardRaised
+ numeric: punctuationMode
anchors {
left: parent.left
right: parent.right
@@ -207,9 +196,9 @@ Window {
}
onKeyboardRaisedChanged: {
- if (keyboardEnabled && keyboardRaised) {
+ if (!keyboardOverride && keyboardEnabled && keyboardRaised) {
var delta = activator.mouseY
- - (activator.height + activator.y - 200 - footerContentHeight - hifi.dimensions.controlLineHeight);
+ - (activator.height + activator.y - keyboard.raisedHeight - footerContentHeight - hifi.dimensions.controlLineHeight);
if (delta > 0) {
pane.scrollBy(delta);
@@ -220,4 +209,10 @@ Window {
}
}
}
+
+ Component.onCompleted: {
+ if (typeof HMD !== "undefined") {
+ keyboardEnabled = HMD.active;
+ }
+ }
}
diff --git a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp
index 021edde2c2..bea3e6a0de 100644
--- a/libraries/entities-renderer/src/RenderableWebEntityItem.cpp
+++ b/libraries/entities-renderer/src/RenderableWebEntityItem.cpp
@@ -108,6 +108,7 @@ bool RenderableWebEntityItem::buildWebSurface(EntityTreeRenderer* renderer) {
_webSurface->resume();
_webSurface->getRootItem()->setProperty("url", _sourceUrl);
_webSurface->getRootContext()->setContextProperty("desktop", QVariant());
+ // FIXME - Keyboard HMD only: Possibly add "HMDinfo" object to context for WebView.qml.
// forward web events to EntityScriptingInterface
auto entities = DependencyManager::get();
diff --git a/libraries/gl/src/gl/OffscreenQmlSurface.cpp b/libraries/gl/src/gl/OffscreenQmlSurface.cpp
index f48e2e6092..d16968f370 100644
--- a/libraries/gl/src/gl/OffscreenQmlSurface.cpp
+++ b/libraries/gl/src/gl/OffscreenQmlSurface.cpp
@@ -309,6 +309,7 @@ void OffscreenQmlSurface::create(QOpenGLContext* shareContext) {
}
// FIXME
+ _glData = ::getGLContextData(); // Initialize JSON structure so that it can be filled in later and then used in QML.
_qmlEngine->rootContext()->setContextProperty("GL", _glData);
_qmlEngine->rootContext()->setContextProperty("offscreenWindow", QVariant::fromValue(getWindow()));
_qmlComponent = new QQmlComponent(_qmlEngine);
@@ -726,13 +727,13 @@ void OffscreenQmlSurface::setFocusText(bool newFocusText) {
}
// UTF-8 encoded symbols
-static const uint8_t UPWARDS_WHITE_ARROW_FROM_BAR[] = { 0xE2, 0x87, 0xAA, 0x00 }; // shift
-static const uint8_t LEFT_ARROW[] = { 0xE2, 0x86, 0x90, 0x00 }; // backspace
-static const uint8_t LEFTWARD_WHITE_ARROW[] = { 0xE2, 0x87, 0xA6, 0x00 }; // left arrow
-static const uint8_t RIGHTWARD_WHITE_ARROW[] = { 0xE2, 0x87, 0xA8, 0x00 }; // right arrow
-static const uint8_t ASTERISIM[] = { 0xE2, 0x81, 0x82, 0x00 }; // symbols
-static const uint8_t RETURN_SYMBOL[] = { 0xE2, 0x8F, 0x8E, 0x00 }; // return
-static const char PUNCTUATION_STRING[] = "&123";
+static const uint8_t SHIFT_ARROW[] = { 0xE2, 0x87, 0xAA, 0x00 };
+static const uint8_t NUMERIC_SHIFT_ARROW[] = { 0xE2, 0x87, 0xA8, 0x00 };
+static const uint8_t BACKSPACE_SYMBOL[] = { 0xE2, 0x86, 0x90, 0x00 };
+static const uint8_t LEFT_ARROW[] = { 0xE2, 0x9D, 0xAC, 0x00 };
+static const uint8_t RIGHT_ARROW[] = { 0xE2, 0x9D, 0xAD, 0x00 };
+static const uint8_t RETURN_SYMBOL[] = { 0xE2, 0x8F, 0x8E, 0x00 };
+static const char PUNCTUATION_STRING[] = "123";
static const char ALPHABET_STRING[] = "abc";
static bool equals(const QByteArray& byteArray, const uint8_t* ptr) {
@@ -752,19 +753,19 @@ void OffscreenQmlSurface::synthesizeKeyPress(QString key) {
int scanCode = (int)utf8Key[0];
QString keyString = key;
- if (equals(utf8Key, UPWARDS_WHITE_ARROW_FROM_BAR) || equals(utf8Key, ASTERISIM) ||
+ if (equals(utf8Key, SHIFT_ARROW) || equals(utf8Key, NUMERIC_SHIFT_ARROW) ||
equals(utf8Key, (uint8_t*)PUNCTUATION_STRING) || equals(utf8Key, (uint8_t*)ALPHABET_STRING)) {
return; // ignore
- } else if (equals(utf8Key, LEFT_ARROW)) {
+ } else if (equals(utf8Key, BACKSPACE_SYMBOL)) {
scanCode = Qt::Key_Backspace;
keyString = "\x08";
} else if (equals(utf8Key, RETURN_SYMBOL)) {
scanCode = Qt::Key_Return;
keyString = "\x0d";
- } else if (equals(utf8Key, LEFTWARD_WHITE_ARROW)) {
+ } else if (equals(utf8Key, LEFT_ARROW)) {
scanCode = Qt::Key_Left;
keyString = "";
- } else if (equals(utf8Key, RIGHTWARD_WHITE_ARROW)) {
+ } else if (equals(utf8Key, RIGHT_ARROW)) {
scanCode = Qt::Key_Right;
keyString = "";
}
@@ -787,6 +788,7 @@ void OffscreenQmlSurface::setKeyboardRaised(QObject* object, bool raised, bool n
numeric = numeric || QString(item->metaObject()->className()).left(7) == "SpinBox";
if (item->property("keyboardRaised").isValid()) {
+ // FIXME - HMD only: Possibly set value of "keyboardEnabled" per isHMDMode() for use in WebView.qml.
if (item->property("punctuationMode").isValid()) {
item->setProperty("punctuationMode", QVariant(numeric));
}