From c4f2c14aa21c1cdd770e6c5385f30e3dec33bfd9 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 1 Sep 2023 15:10:50 +0200 Subject: [PATCH] QmlJsEditor: Delay construction of QuickToolBar It's now apparently created when the first .qml file opens. Change-Id: I4bcd84d29da268565ee6e771f8c56c8b07ecdaf3 Reviewed-by: Reviewed-by: Eike Ziller --- src/plugins/qmljseditor/qmljseditor.cpp | 2 +- src/plugins/qmljseditor/qmljseditorplugin.cpp | 7 ----- src/plugins/qmljseditor/qmljseditorplugin.h | 1 - src/plugins/qmljseditor/quicktoolbar.cpp | 6 ++++ src/plugins/qmljseditor/quicktoolbar.h | 31 ++++++++++--------- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp index 1bd8ef89ff8..765d8d4ad28 100644 --- a/src/plugins/qmljseditor/qmljseditor.cpp +++ b/src/plugins/qmljseditor/qmljseditor.cpp @@ -116,7 +116,7 @@ void QmlJSEditorWidget::finalizeInitialization() this, &QmlJSEditorWidget::updateOutlineIndexNow); m_modelManager = ModelManagerInterface::instance(); - m_contextPane = Internal::QmlJSEditorPlugin::quickToolBar(); + m_contextPane = QuickToolBar::instance(); m_modelManager->activateScan(); diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index e4b2538dcb9..47fd2126d5c 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -85,7 +85,6 @@ public: ICore::resourcePath("json/").toString()}}; QmlJSEditorFactory m_qmlJSEditorFactory; QmlJSOutlineWidgetFactory m_qmlJSOutlineWidgetFactory; - QuickToolBar m_quickToolBar; QmlJsEditingSettingsPage m_qmJSEditingSettingsPage; }; @@ -223,12 +222,6 @@ QmlJS::JsonSchemaManager *QmlJSEditorPlugin::jsonManager() return &m_instance->d->m_jsonManager; } -QuickToolBar *QmlJSEditorPlugin::quickToolBar() -{ - QTC_ASSERT(m_instance && m_instance->d, return new QuickToolBar()); - return &m_instance->d->m_quickToolBar; -} - void QmlJSEditorPluginPrivate::renameUsages() { if (auto editor = qobject_cast(EditorManager::currentEditor()->widget())) diff --git a/src/plugins/qmljseditor/qmljseditorplugin.h b/src/plugins/qmljseditor/qmljseditorplugin.h index 69d1c477086..2931c8f0bec 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.h +++ b/src/plugins/qmljseditor/qmljseditorplugin.h @@ -24,7 +24,6 @@ public: static QmlJSQuickFixAssistProvider *quickFixAssistProvider(); static QmlJS::JsonSchemaManager *jsonManager(); - static QuickToolBar *quickToolBar(); private: void initialize() final; diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index 4d95818d838..1487d44844e 100644 --- a/src/plugins/qmljseditor/quicktoolbar.cpp +++ b/src/plugins/qmljseditor/quicktoolbar.cpp @@ -86,6 +86,12 @@ QuickToolBar::~QuickToolBar() m_widget = nullptr; } +QuickToolBar *QuickToolBar::instance() +{ + static QuickToolBar theQuickToolBar; + return &theQuickToolBar; +} + void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::Ptr document, const ScopeChain *scopeChain, Node *node, bool update, bool force) { if (!QmlJsEditingSettings::get().enableContextPane() && !force && !update) { diff --git a/src/plugins/qmljseditor/quicktoolbar.h b/src/plugins/qmljseditor/quicktoolbar.h index aea42eaccf4..df6a2ca2665 100644 --- a/src/plugins/qmljseditor/quicktoolbar.h +++ b/src/plugins/qmljseditor/quicktoolbar.h @@ -15,24 +15,27 @@ class QuickToolBar : public QmlJS::IContextPane { Q_OBJECT + QuickToolBar(); public: - QuickToolBar(); - ~QuickToolBar() override; - void apply(TextEditor::TextEditorWidget *widget, QmlJS::Document::Ptr document, const QmlJS::ScopeChain *scopeChain, QmlJS::AST::Node *node, bool update, bool force = false) override; - bool isAvailable(TextEditor::TextEditorWidget *widget, QmlJS::Document::Ptr document, QmlJS::AST::Node *node) override; - void setProperty(const QString &propertyName, const QVariant &value); - void removeProperty(const QString &propertyName); - void setEnabled(bool) override; - QWidget* widget() override; + ~QuickToolBar() override; - void onPropertyChanged(const QString &, const QVariant &); - void onPropertyRemoved(const QString &); - void onPropertyRemovedAndChange(const QString &, const QString &, const QVariant &, bool removeFirst = true); - void onPinnedChanged(bool); - void onEnabledChanged(bool); + static QuickToolBar *instance(); + + void apply(TextEditor::TextEditorWidget *widget, QmlJS::Document::Ptr document, const QmlJS::ScopeChain *scopeChain, QmlJS::AST::Node *node, bool update, bool force = false) override; + bool isAvailable(TextEditor::TextEditorWidget *widget, QmlJS::Document::Ptr document, QmlJS::AST::Node *node) override; + void setProperty(const QString &propertyName, const QVariant &value); + void removeProperty(const QString &propertyName); + void setEnabled(bool) override; + QWidget* widget() override; + + void onPropertyChanged(const QString &, const QVariant &); + void onPropertyRemoved(const QString &); + void onPropertyRemovedAndChange(const QString &, const QString &, const QVariant &, bool removeFirst = true); + void onPinnedChanged(bool); + void onEnabledChanged(bool); private: - void indentLines(int startLine, int endLine); + void indentLines(int startLine, int endLine); QmlEditorWidgets::ContextPaneWidget* contextWidget(); QPointer m_widget;