From ffdaadf13c946eb8082d9ea39849ff2c71d7d6b4 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Thu, 14 Jul 2016 15:48:14 -0700 Subject: [PATCH] Make toolbars work even when debugging a script --- .../src/scripting/ToolbarScriptingInterface.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/interface/src/scripting/ToolbarScriptingInterface.cpp b/interface/src/scripting/ToolbarScriptingInterface.cpp index 175a7fd539..0cb314615a 100644 --- a/interface/src/scripting/ToolbarScriptingInterface.cpp +++ b/interface/src/scripting/ToolbarScriptingInterface.cpp @@ -8,6 +8,8 @@ #include "ToolbarScriptingInterface.h" +#include + #include class QmlWrapper : public QObject { @@ -79,7 +81,11 @@ public: Q_INVOKABLE QObject* addButton(const QVariant& properties) { QVariant resultVar; - bool invokeResult = QMetaObject::invokeMethod(_qmlObject, "addButton", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, properties)); + Qt::ConnectionType connectionType = Qt::AutoConnection; + if (QThread::currentThread() != _qmlObject->thread()) { + connectionType = Qt::BlockingQueuedConnection; + } + bool invokeResult = QMetaObject::invokeMethod(_qmlObject, "addButton", connectionType, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, properties)); if (!invokeResult) { return nullptr; } @@ -101,8 +107,12 @@ public: QObject* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) { auto offscreenUi = DependencyManager::get(); auto desktop = offscreenUi->getDesktop(); + Qt::ConnectionType connectionType = Qt::AutoConnection; + if (QThread::currentThread() != desktop->thread()) { + connectionType = Qt::BlockingQueuedConnection; + } QVariant resultVar; - bool invokeResult = QMetaObject::invokeMethod(desktop, "getToolbar", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, toolbarId)); + bool invokeResult = QMetaObject::invokeMethod(desktop, "getToolbar", connectionType, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, toolbarId)); if (!invokeResult) { return nullptr; }