diff --git a/interface/src/scripting/WebWindowClass.cpp b/interface/src/scripting/WebWindowClass.cpp index cc6f4fbfff..be87870f26 100644 --- a/interface/src/scripting/WebWindowClass.cpp +++ b/interface/src/scripting/WebWindowClass.cpp @@ -41,19 +41,27 @@ WebWindowClass::WebWindowClass(const QString& title, const QString& url, int wid _dockWidget = new QDockWidget(title, toolWindow); _dockWidget->setFeatures(QDockWidget::DockWidgetMovable); - QWebView* webView = new QWebView(_dockWidget); - webView->page()->mainFrame()->addToJavaScriptWindowObject("EventBridge", _eventBridge); - webView->setUrl(url); - _dockWidget->setWidget(webView); + + _webView = new QWebView(_dockWidget); + _webView->setUrl(url); + addEventBridgeToWindowObject(); + + _dockWidget->setWidget(_webView); toolWindow->addDockWidget(Qt::RightDockWidgetArea, _dockWidget); + connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared, + this, &WebWindowClass::addEventBridgeToWindowObject); connect(this, &WebWindowClass::destroyed, _dockWidget, &QWidget::deleteLater); } WebWindowClass::~WebWindowClass() { } +void WebWindowClass::addEventBridgeToWindowObject() { + _webView->page()->mainFrame()->addToJavaScriptWindowObject("EventBridge", _eventBridge); +} + void WebWindowClass::setVisible(bool visible) { if (visible) { QMetaObject::invokeMethod( diff --git a/interface/src/scripting/WebWindowClass.h b/interface/src/scripting/WebWindowClass.h index ae0d14ae06..0fa88804f2 100644 --- a/interface/src/scripting/WebWindowClass.h +++ b/interface/src/scripting/WebWindowClass.h @@ -14,6 +14,7 @@ #include #include +#include class ScriptEventBridge : public QObject { Q_OBJECT @@ -42,9 +43,11 @@ public: public slots: void setVisible(bool visible); ScriptEventBridge* getEventBridge() const { return _eventBridge; } + void addEventBridgeToWindowObject(); private: QDockWidget* _dockWidget; + QWebView* _webView; ScriptEventBridge* _eventBridge; };