QmlDesignerPlugin: Use Utils::Guard for guarding the recursive call

Change-Id: I179d58374fcef4bebce1c3240bf8ba3d956f9c9c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
This commit is contained in:
Jarek Kobus
2023-12-13 21:15:03 +01:00
committed by Tim Jenssen
parent c8f35db483
commit 7969fb2147

View File

@@ -62,11 +62,12 @@
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/projectmanager.h> #include <projectexplorer/projectmanager.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <sqlitelibraryinitializer.h>
#include <qmldesignerbase/qmldesignerbaseplugin.h> #include <qmldesignerbase/qmldesignerbaseplugin.h>
#include <qmljs/qmljsmodelmanagerinterface.h> #include <qmljs/qmljsmodelmanagerinterface.h>
#include <sqlite/sqlitelibraryinitializer.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/guard.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/uniqueobjectptr.h> #include <utils/uniqueobjectptr.h>
@@ -81,9 +82,10 @@
#include <QTimer> #include <QTimer>
#include <QWindow> #include <QWindow>
#include "nanotrace/nanotrace.h"
#include <modelnodecontextmenu_helper.h> #include <modelnodecontextmenu_helper.h>
#include <mutex>
static Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner", QtWarningMsg) static Q_LOGGING_CATEGORY(qmldesignerLog, "qtc.qmldesigner", QtWarningMsg)
using namespace QmlDesigner::Internal; using namespace QmlDesigner::Internal;
@@ -161,7 +163,7 @@ public:
SettingsPage settingsPage{externalDependencies}; SettingsPage settingsPage{externalDependencies};
DesignModeWidget mainWidget; DesignModeWidget mainWidget;
QtQuickDesignerFactory m_qtQuickDesignerFactory; QtQuickDesignerFactory m_qtQuickDesignerFactory;
bool blockEditorChange = false; Utils::Guard m_ignoreChanges;
Utils::UniqueObjectPtr<QToolBar> toolBar; Utils::UniqueObjectPtr<QToolBar> toolBar;
Utils::UniqueObjectPtr<QWidget> statusBar; Utils::UniqueObjectPtr<QWidget> statusBar;
QHash<QString, TraceIdentifierData> m_traceIdentifierDataHash; QHash<QString, TraceIdentifierData> m_traceIdentifierDataHash;
@@ -496,7 +498,7 @@ void QmlDesignerPlugin::hideDesigner()
void QmlDesignerPlugin::changeEditor() void QmlDesignerPlugin::changeEditor()
{ {
if (d->blockEditorChange) if (d->m_ignoreChanges.isLocked())
return; return;
clearDesigner(); clearDesigner();
@@ -687,9 +689,8 @@ void QmlDesignerPlugin::switchToTextModeDeferred()
void QmlDesignerPlugin::emitCurrentTextEditorChanged(Core::IEditor *editor) void QmlDesignerPlugin::emitCurrentTextEditorChanged(Core::IEditor *editor)
{ {
d->blockEditorChange = true; const std::lock_guard locker(d->m_ignoreChanges);
emit Core::EditorManager::instance()->currentEditorChanged(editor); emit Core::EditorManager::instance()->currentEditorChanged(editor);
d->blockEditorChange = false;
} }
double QmlDesignerPlugin::formEditorDevicePixelRatio() double QmlDesignerPlugin::formEditorDevicePixelRatio()