From 14a5675e2357ca271fc8e8028b04414de0fcc6cc Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Fri, 7 Feb 2025 12:08:29 +0100 Subject: [PATCH] QmlDesigner: Fix double creation of DVConnector DVConnector is created twice once for the toolbar instance and another time for the statusbar instance in QML. Fix this by making the DVConnector a static unique_ptr. Change-Id: Ib8dc18154bbb7915860d182dd5b66626bc3e60d6 Reviewed-by: Thomas Hartmann --- .../qmldesigner/components/toolbar/toolbarbackend.cpp | 11 ++++++++++- .../qmldesigner/components/toolbar/toolbarbackend.h | 3 --- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp index a957d145b5d..b18f871c780 100644 --- a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp +++ b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.cpp @@ -48,6 +48,8 @@ #include +#include + namespace QmlDesigner { static Internal::DesignModeWidget *designModeWidget() @@ -349,6 +351,10 @@ void ActionSubscriber::setupNotifier() emit tooltipChanged(); } +#ifdef DVCONNECTOR_ENABLED +static std::unique_ptr s_designViewerConnector; +#endif + ToolBarBackend::ToolBarBackend(QObject *parent) : QObject(parent) { @@ -929,7 +935,10 @@ QString ToolBarBackend::runManagerError() const #ifdef DVCONNECTOR_ENABLED DesignViewer::DVConnector *ToolBarBackend::designViewerConnector() { - return &m_designViewerConnector; + if (!s_designViewerConnector) + s_designViewerConnector = std::make_unique(); + + return s_designViewerConnector.get(); } #endif diff --git a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h index b3330a15eef..864e781348f 100644 --- a/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h +++ b/src/plugins/qmldesigner/components/toolbar/toolbarbackend.h @@ -232,9 +232,6 @@ private: QStringList m_openDocuments; QMetaObject::Connection m_kitConnection; -#ifdef DVCONNECTOR_ENABLED - DesignViewer::DVConnector m_designViewerConnector; -#endif }; } // namespace QmlDesigner