History

Fix JS to QML event bridge messages with Docked Windows

Zach Fox committed 7 years ago

Commit 0400bc61 parent 70c9c072 files · +3 −5Browse files

Showing the changes to interface/src/ui/InteractiveWindow.cpp (1 of 2 files). Show all

Unified · Split

interface/src/ui/InteractiveWindow.cpp+3−4
@@ -69,7 +69,6 @@ void interactiveWindowPointerFromScriptValue(const QScriptValue& object, Interac · 68 unmodified lines
6969 }
7070
7171 InteractiveWindow::InteractiveWindow(const QString& sourceUrl, const QVariantMap& properties) {
72− bool docked = false;
7372 InteractiveWindowPresentationMode presentationMode = InteractiveWindowPresentationMode::Native;
7473
7574 if (properties.contains(PRESENTATION_MODE_PROPERTY)) {
@@ -124,12 +123,12 @@ InteractiveWindow::InteractiveWindow(const QString& sourceUrl, const QVariantMap · 48 unmodified lines
124123 QObject::connect(quickView.get(), &QQuickView::statusChanged, [&, this] (QQuickView::Status status) {
125124 if (status == QQuickView::Ready) {
126125 QQuickItem* rootItem = _dockWidget->getRootItem();
126+ _dockWidget->getQuickView()->rootContext()->setContextProperty(EVENT_BRIDGE_PROPERTY, this);
127127 QObject::connect(rootItem, SIGNAL(sendToScript(QVariant)), this, SLOT(qmlToScript(const QVariant&)), Qt::QueuedConnection);
128128 }
129129 });
130130 _dockWidget->setSource(QUrl(sourceUrl));
131131 mainWindow->addDockWidget(dockArea, _dockWidget.get());
132− _dockedWindow = docked;
133132 } else {
134133 auto offscreenUi = DependencyManager::get<OffscreenUi>();
135134 // Build the event bridge and wrapper on the main thread
@@ -188,10 +187,10 @@ InteractiveWindow::~InteractiveWindow() { · 52 unmodified lines
188187
189188 void InteractiveWindow::sendToQml(const QVariant& message) {
190189 // Forward messages received from the script on to QML
191− if (_dockedWindow) {
190+ if (_dockWidget) {
192191 QQuickItem* rootItem = _dockWidget->getRootItem();
193192 if (rootItem) {
194− QMetaObject::invokeMethod(_qmlWindow, "fromScript", Qt::QueuedConnection, Q_ARG(QVariant, message));
193+ QMetaObject::invokeMethod(rootItem, "fromScript", Qt::QueuedConnection, Q_ARG(QVariant, message));
195194 }
196195 } else {
197196 QMetaObject::invokeMethod(_qmlWindow, "fromScript", Qt::QueuedConnection, Q_ARG(QVariant, message));