History

Make toolbars work even when debugging a script

Brad Davis committed 10 years ago

Commit ffdaadf1 parent 45aa7871 file · +12 −2Browse files

Showing the changes to interface/src/scripting/ToolbarScriptingInterface.cpp (1 of 1 file). Show all

Unified · Split

interface/src/scripting/ToolbarScriptingInterface.cpp+12−2
@@ -8,6 +8,8 @@ · 7 unmodified lines
88
99 #include "ToolbarScriptingInterface.h"
1010
11+#include <QtCore/QThread>
12+
1113 #include <OffscreenUi.h>
1214
1315 class QmlWrapper : public QObject {
@@ -79,7 +81,11 @@ public: · 65 unmodified lines
7981
8082 Q_INVOKABLE QObject* addButton(const QVariant& properties) {
8183 QVariant resultVar;
82− bool invokeResult = QMetaObject::invokeMethod(_qmlObject, "addButton", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, properties));
84+ Qt::ConnectionType connectionType = Qt::AutoConnection;
85+ if (QThread::currentThread() != _qmlObject->thread()) {
86+ connectionType = Qt::BlockingQueuedConnection;
87+ }
88+ bool invokeResult = QMetaObject::invokeMethod(_qmlObject, "addButton", connectionType, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, properties));
8389 if (!invokeResult) {
8490 return nullptr;
8591 }
@@ -101,8 +107,12 @@ public: · 15 unmodified lines
101107 QObject* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) {
102108 auto offscreenUi = DependencyManager::get<OffscreenUi>();
103109 auto desktop = offscreenUi->getDesktop();
110+ Qt::ConnectionType connectionType = Qt::AutoConnection;
111+ if (QThread::currentThread() != desktop->thread()) {
112+ connectionType = Qt::BlockingQueuedConnection;
113+ }
104114 QVariant resultVar;
105− bool invokeResult = QMetaObject::invokeMethod(desktop, "getToolbar", Qt::BlockingQueuedConnection, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, toolbarId));
115+ bool invokeResult = QMetaObject::invokeMethod(desktop, "getToolbar", connectionType, Q_RETURN_ARG(QVariant, resultVar), Q_ARG(QVariant, toolbarId));
106116 if (!invokeResult) {
107117 return nullptr;
108118 }