diff --git a/hifi_vcpkg.py b/hifi_vcpkg.py
index 821d9ae0b7..7bb261faa0 100644
--- a/hifi_vcpkg.py
+++ b/hifi_vcpkg.py
@@ -134,7 +134,7 @@ endif()
downloadVcpkg = True
if not downloadVcpkg and not os.path.isfile(self.exe):
- print("Missing executable, boostrapping")
+ print("Missing executable, boot-strapping")
downloadVcpkg = True
# Make sure we have a vcpkg executable
diff --git a/interface/resources/avatar/avatar-animation.json b/interface/resources/avatar/avatar-animation.json
index ec490e1c38..671e55adf2 100644
--- a/interface/resources/avatar/avatar-animation.json
+++ b/interface/resources/avatar/avatar-animation.json
@@ -2478,8 +2478,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
@@ -2489,8 +2489,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk02",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
@@ -2500,8 +2500,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk03",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
@@ -2511,8 +2511,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk04",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
@@ -2522,8 +2522,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk_armsdown",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
@@ -2533,8 +2533,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk_lefthand",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
@@ -2544,8 +2544,8 @@
{
"easingType": "easeInOutQuad",
"id": "talk_righthand",
- "interpDuration": 1,
- "interpTarget": 1,
+ "interpDuration": 20,
+ "interpTarget": 20,
"interpType": "evaluateBoth",
"priority": 0.33,
"resume": true,
diff --git a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml
index 03fbbb178e..85e5211649 100644
--- a/interface/resources/qml/hifi/commerce/purchases/Purchases.qml
+++ b/interface/resources/qml/hifi/commerce/purchases/Purchases.qml
@@ -580,8 +580,9 @@ Rectangle {
sendToScript(msg);
} else if (msg.method === "showInvalidatedLightbox") {
lightboxPopup.titleText = "Item Invalidated";
- lightboxPopup.bodyText = 'Your item is marked "invalidated" because this item has been suspended ' +
- "from the Marketplace due to a claim against its author.";
+ lightboxPopup.bodyText = 'This item has been invalidated and is no longer available.
' +
+ 'If you have questions, please contact marketplace@highfidelity.com.
' +
+ 'Thank you!';
lightboxPopup.button1text = "CLOSE";
lightboxPopup.button1method = function() {
lightboxPopup.visible = false;
diff --git a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml
index c92da7e6e5..4919077dc3 100644
--- a/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml
+++ b/interface/resources/qml/hifi/simplifiedUI/topBar/SimplifiedTopBar.qml
@@ -384,6 +384,7 @@ Rectangle {
placeholderTextColor: "#8E8E8E"
font.pixelSize: 14
placeholderText: width - leftPadding - rightPadding < goToTextFieldMetrics.width ? shortPlaceholderText : longPlaceholderText
+ blankPlaceholderTextOnFocus: false
clip: true
selectByMouse: true
autoScroll: true
diff --git a/libraries/networking/src/AccountManager.cpp b/libraries/networking/src/AccountManager.cpp
index 5edbc5261d..5473f1a010 100644
--- a/libraries/networking/src/AccountManager.cpp
+++ b/libraries/networking/src/AccountManager.cpp
@@ -808,6 +808,8 @@ void AccountManager::requestAccountSettings() {
return;
}
+ qCDebug(networking) << "Requesting the Account Settings from the Metaverse API";
+
QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
QUrl lockerURL = _authURL;
@@ -834,6 +836,9 @@ void AccountManager::requestAccountSettingsFinished() {
if (rootObject.contains("status") && rootObject["status"].toString() == "success") {
if (rootObject.contains("data") && rootObject["data"].isObject()) {
_settings.unpack(rootObject["data"].toObject());
+ _lastSuccessfulSyncTimestamp = _settings.lastChangeTimestamp();
+
+ qCDebug(networking) << "Received the Account Settings from the Metaverse API";
emit accountSettingsLoaded();
} else {
@@ -874,6 +879,8 @@ void AccountManager::postAccountSettings() {
return;
}
+ qCDebug(networking) << "Account Settings have changed, pushing them to the Metaverse API";
+
QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
QUrl lockerURL = _authURL;
diff --git a/libraries/ui/src/ui/ToolbarScriptingInterface.h b/libraries/ui/src/ui/ToolbarScriptingInterface.h
index 952d3cce95..3d38aa296b 100644
--- a/libraries/ui/src/ui/ToolbarScriptingInterface.h
+++ b/libraries/ui/src/ui/ToolbarScriptingInterface.h
@@ -92,15 +92,19 @@ public:
ToolbarProxy(QObject* qmlObject, QObject* parent = nullptr);
/**jsdoc
+ * Currently doesn't work.
* @function ToolbarProxy#addButton
- * @param {object} properties
- * @returns {ToolbarButtonProxy}
+ * @param {object} properties - Button properties
+ * @returns {object} The button added.
+ * @deprecated This method is deprecated and will be removed.
*/
Q_INVOKABLE ToolbarButtonProxy* addButton(const QVariant& properties);
/**jsdoc
+ * Currently doesn't work.
* @function ToolbarProxy#removeButton
- * @param {string} name
+ * @param {string} name - Button name.
+ * @deprecated This method is deprecated and will be removed.
*/
Q_INVOKABLE void removeButton(const QVariant& name);
diff --git a/scripts/developer/tests/toolbarTest.js b/scripts/developer/tests/toolbarTest.js
index 89609e610d..9e82f814ac 100644
--- a/scripts/developer/tests/toolbarTest.js
+++ b/scripts/developer/tests/toolbarTest.js
@@ -1,117 +1,38 @@
-var isActive = false;
+(function () {
-var toolBar = (function() {
- var that = {},
- toolBar,
- activeButton,
- newModelButton,
- newShapeButton,
- newLightButton,
- newTextButton,
- newWebButton,
- newZoneButton,
- newParticleButton,
- newMaterialButton
-
- var toolIconUrl = Script.resolvePath("../../system/assets/images/tools/");
-
- function initialize() {
- print("Toolbars: " + Toolbars);
- toolBar = Toolbars.getToolbar("highfidelity.edit.toolbar");
- print("Toolbar: " + toolBar);
- activeButton = toolBar.addButton({
- objectName: "activeButton",
- imageURL: toolIconUrl + "edit-01.svg",
- visible: true,
- alpha: 0.9,
- });
-
- print("Button " + activeButton);
- print("Button signal " + activeButton.clicked);
- activeButton.clicked.connect(function(){
- print("Clicked on button " + isActive);
- that.setActive(!isActive);
- });
-
- newModelButton = toolBar.addButton({
- objectName: "newModelButton",
- imageURL: toolIconUrl + "model-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newShapeButton = toolBar.addButton({
- objectName: "newShapeButton",
- imageURL: toolIconUrl + "cube-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newLightButton = toolBar.addButton({
- objectName: "newLightButton",
- imageURL: toolIconUrl + "light-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newTextButton = toolBar.addButton({
- objectName: "newTextButton",
- imageURL: toolIconUrl + "text-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newWebButton = toolBar.addButton({
- objectName: "newWebButton",
- imageURL: toolIconUrl + "web-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newZoneButton = toolBar.addButton({
- objectName: "newZoneButton",
- imageURL: toolIconUrl + "zone-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newParticleButton = toolBar.addButton({
- objectName: "newParticleButton",
- imageURL: toolIconUrl + "particle-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- newMaterialButton = toolBar.addButton({
- objectName: "newMaterialButton",
- imageURL: toolIconUrl + "material-01.svg",
- alpha: 0.9,
- visible: false
- });
-
- that.setActive(false);
- newModelButton.clicked();
+ // Get the system toolbar.
+ var toolbar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
+ if (!toolbar) {
+ print("ERROR: Couldn't get system toolbar.");
+ return;
}
- that.setActive = function(active) {
- if (active != isActive) {
- isActive = active;
- that.showTools(isActive);
- }
- };
+ Script.setTimeout(function () {
+ // Report the system toolbar visibility.
+ var isToolbarVisible = toolbar.readProperty("visible");
+ print("Toolbar visible: " + isToolbarVisible);
- // Sets visibility of tool buttons, excluding the power button
- that.showTools = function(doShow) {
- newModelButton.writeProperty('visible', doShow);
- newShapeButton.writeProperty('visible', doShow);
- newLightButton.writeProperty('visible', doShow);
- newTextButton.writeProperty('visible', doShow);
- newWebButton.writeProperty('visible', doShow);
- newZoneButton.writeProperty('visible', doShow);
- newParticleButton.writeProperty('visible', doShow);
- newMaterialButton.writeProperty('visible', doShow);
- };
+ // Briefly toggle the system toolbar visibility.
+ print("Toggle toolbar");
+ toolbar.writeProperty("visible", !isToolbarVisible);
+ Script.setTimeout(function () {
+ print("Toggle toolbar");
+ toolbar.writeProperty("visible", isToolbarVisible);
+ }, 2000);
+ }, 2000);
+
+ Script.setTimeout(function () {
+ // Report the system toolbar visibility alternative method.
+ isToolbarVisible = toolbar.readProperties(["visible"]).visible;
+ print("Toolbar visible: " + isToolbarVisible);
+
+ // Briefly toggle the system toolbar visibility.
+ print("Toggle toolbar");
+ toolbar.writeProperties({ visible: !isToolbarVisible });
+ Script.setTimeout(function () {
+ print("Toggle toolbar");
+ toolbar.writeProperties({ visible: isToolbarVisible });
+ }, 2000);
+ }, 6000);
- initialize();
- return that;
}());
diff --git a/scripts/simplifiedUI/ui/simplifiedUI.js b/scripts/simplifiedUI/ui/simplifiedUI.js
index 37cf506898..3de8af8a24 100644
--- a/scripts/simplifiedUI/ui/simplifiedUI.js
+++ b/scripts/simplifiedUI/ui/simplifiedUI.js
@@ -160,6 +160,7 @@ var SETTINGS_APP_WINDOW_FLAGS = 0x00000001 | // Qt::Window
0x08000000 | // Qt::WindowCloseButtonHint
0x00008000 | // Qt::WindowMaximizeButtonHint
0x00004000; // Qt::WindowMinimizeButtonHint
+var SETTINGS_APP_RIGHT_MARGIN = 48;
var settingsAppWindow = false;
function toggleSettingsApp() {
if (settingsAppWindow) {
@@ -179,7 +180,7 @@ function toggleSettingsApp() {
y: SETTINGS_APP_HEIGHT_PX
},
position: {
- x: Math.max(Window.x + POPOUT_SAFE_MARGIN_X, Window.x + Window.innerWidth / 2 - SETTINGS_APP_WIDTH_PX / 2),
+ x: Window.x + Window.innerWidth - SETTINGS_APP_WIDTH_PX - SETTINGS_APP_RIGHT_MARGIN,
y: Math.max(Window.y + POPOUT_SAFE_MARGIN_Y, Window.y + Window.innerHeight / 2 - SETTINGS_APP_HEIGHT_PX / 2)
},
overrideFlags: SETTINGS_APP_WINDOW_FLAGS