mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Make toolbars work even when debugging a script
This commit is contained in:
parent
45aa78702c
commit
ffdaadf13c
1 changed files with 12 additions and 2 deletions
|
@ -8,6 +8,8 @@
|
||||||
|
|
||||||
#include "ToolbarScriptingInterface.h"
|
#include "ToolbarScriptingInterface.h"
|
||||||
|
|
||||||
|
#include <QtCore/QThread>
|
||||||
|
|
||||||
#include <OffscreenUi.h>
|
#include <OffscreenUi.h>
|
||||||
|
|
||||||
class QmlWrapper : public QObject {
|
class QmlWrapper : public QObject {
|
||||||
|
@ -79,7 +81,11 @@ public:
|
||||||
|
|
||||||
Q_INVOKABLE QObject* addButton(const QVariant& properties) {
|
Q_INVOKABLE QObject* addButton(const QVariant& properties) {
|
||||||
QVariant resultVar;
|
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) {
|
if (!invokeResult) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -101,8 +107,12 @@ public:
|
||||||
QObject* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) {
|
QObject* ToolbarScriptingInterface::getToolbar(const QString& toolbarId) {
|
||||||
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
auto offscreenUi = DependencyManager::get<OffscreenUi>();
|
||||||
auto desktop = offscreenUi->getDesktop();
|
auto desktop = offscreenUi->getDesktop();
|
||||||
|
Qt::ConnectionType connectionType = Qt::AutoConnection;
|
||||||
|
if (QThread::currentThread() != desktop->thread()) {
|
||||||
|
connectionType = Qt::BlockingQueuedConnection;
|
||||||
|
}
|
||||||
QVariant resultVar;
|
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) {
|
if (!invokeResult) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue