From 7598c7aaf3d99ed574164713aef2bf178630d6de Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Thu, 31 May 2018 13:52:06 -0700 Subject: [PATCH 1/5] Remove tablet message-box when required Desktop request was being honoured but not HMD. --- interface/src/ui/DialogsManager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index d01e7d6671..51c6987875 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -97,6 +97,9 @@ void DialogsManager::setDomainConnectionFailureVisibility(bool visible) { if (!hmd->getShouldShowTablet()) { hmd->openTablet(); } + } else { + tablet->gotoHomeScreen(); + hmd->closeTablet(); } } } From 7d1d7f7bcd56b9d8a3aa54af38205f4eaa6e5c68 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Thu, 31 May 2018 18:31:53 -0700 Subject: [PATCH 2/5] Closing the open tablet dialog - try harder --- interface/resources/qml/hifi/tablet/TabletRoot.qml | 12 ++++++++++++ interface/src/ui/DialogsManager.cpp | 3 ++- libraries/ui/src/ui/TabletScriptingInterface.cpp | 14 ++++++++++++++ libraries/ui/src/ui/TabletScriptingInterface.h | 6 ++++++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 15db5d8f88..fa268ad6ee 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -65,6 +65,18 @@ Item { return false; } + function closeDialog() { + if (openMessage != null) { + openMessage.destroy(); + openMessage = null; + } + + if (openModal != null) { + openModal.destroy(); + openModal = null; + } + } + function isUrlLoaded(url) { if (currentApp >= 0) { var currentAppUrl = tabletApps.get(currentApp).appUrl; diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index 51c6987875..95a96e3388 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -97,7 +97,8 @@ void DialogsManager::setDomainConnectionFailureVisibility(bool visible) { if (!hmd->getShouldShowTablet()) { hmd->openTablet(); } - } else { + } else if (tablet->isPathLoaded(url)) { + tablet->closeDialog(); tablet->gotoHomeScreen(); hmd->closeTablet(); } diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index 9070d87a3c..062acd2d99 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -431,6 +431,20 @@ bool TabletProxy::isMessageDialogOpen() { return result.toBool(); } +void TabletProxy::closeDialog() { + if (QThread::currentThread() != thread()) { + bool result = false; + QMetaObject::invokeMethod(this, "isMessageDialogOpen"); + return; + } + + if (!_qmlTabletRoot) { + return; + } + + QMetaObject::invokeMethod(_qmlTabletRoot, "closeDialog"); +} + void TabletProxy::emitWebEvent(const QVariant& msg) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "emitWebEvent", Q_ARG(QVariant, msg)); diff --git a/libraries/ui/src/ui/TabletScriptingInterface.h b/libraries/ui/src/ui/TabletScriptingInterface.h index 43d889f1d1..1ab29ca3fd 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.h +++ b/libraries/ui/src/ui/TabletScriptingInterface.h @@ -308,6 +308,12 @@ public: */ Q_INVOKABLE bool isMessageDialogOpen(); + /**jsdoc + * Close any open dialogs. + * @function TabletProxy#closeDialog + */ + Q_INVOKABLE void closeDialog(); + /**jsdoc * Creates a new button, adds it to this and returns it. * @function TabletProxy#addButton From c277cc7574762e9666320cade0038a57dc146dc7 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Thu, 31 May 2018 18:39:25 -0700 Subject: [PATCH 3/5] Fix minor error --- libraries/ui/src/ui/TabletScriptingInterface.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index 062acd2d99..e03dc7ac63 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -434,7 +434,7 @@ bool TabletProxy::isMessageDialogOpen() { void TabletProxy::closeDialog() { if (QThread::currentThread() != thread()) { bool result = false; - QMetaObject::invokeMethod(this, "isMessageDialogOpen"); + QMetaObject::invokeMethod(this, "closeDialog"); return; } From 2d9a5c62c161ccb54bee0e311af7ae785111a553 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Fri, 1 Jun 2018 10:02:41 -0700 Subject: [PATCH 4/5] Clean-up for compiler warnings --- libraries/ui/src/ui/TabletScriptingInterface.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/ui/src/ui/TabletScriptingInterface.cpp b/libraries/ui/src/ui/TabletScriptingInterface.cpp index e03dc7ac63..2c52e669a0 100644 --- a/libraries/ui/src/ui/TabletScriptingInterface.cpp +++ b/libraries/ui/src/ui/TabletScriptingInterface.cpp @@ -433,7 +433,6 @@ bool TabletProxy::isMessageDialogOpen() { void TabletProxy::closeDialog() { if (QThread::currentThread() != thread()) { - bool result = false; QMetaObject::invokeMethod(this, "closeDialog"); return; } From f58e1ebdd973f1e6c98eb253640a74e2d9acfd57 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Fri, 1 Jun 2018 10:41:08 -0700 Subject: [PATCH 5/5] Only take down tablet if it was brought up --- interface/src/ui/DialogsManager.cpp | 6 +++++- interface/src/ui/DialogsManager.h | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index 95a96e3388..83601a2797 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -93,6 +93,7 @@ void DialogsManager::setDomainConnectionFailureVisibility(bool visible) { static const QUrl url("dialogs/TabletConnectionFailureDialog.qml"); auto hmd = DependencyManager::get(); if (visible) { + _dialogCreatedWhileShown = tablet->property("tabletShown").toBool(); tablet->initialScreen(url); if (!hmd->getShouldShowTablet()) { hmd->openTablet(); @@ -100,7 +101,10 @@ void DialogsManager::setDomainConnectionFailureVisibility(bool visible) { } else if (tablet->isPathLoaded(url)) { tablet->closeDialog(); tablet->gotoHomeScreen(); - hmd->closeTablet(); + if (!_dialogCreatedWhileShown) { + hmd->closeTablet(); + } + _dialogCreatedWhileShown = false; } } } diff --git a/interface/src/ui/DialogsManager.h b/interface/src/ui/DialogsManager.h index f17ac39a7e..0633dec573 100644 --- a/interface/src/ui/DialogsManager.h +++ b/interface/src/ui/DialogsManager.h @@ -80,6 +80,7 @@ private: QPointer _octreeStatsDialog; QPointer _testingDialog; QPointer _domainConnectionDialog; + bool _dialogCreatedWhileShown { false }; bool _addressBarVisible { false }; };