diff options
author | Eike Ziller <eike.ziller@qt.io> | 2018-07-06 09:11:05 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2018-07-06 14:01:40 +0000 |
commit | 299da013325be20ff731b91e7ead47b20242b1cd (patch) | |
tree | 722dc2a5a37b9ddae23a1cf8b19057aa530c1490 /src | |
parent | cb572773c0f6e6d577e29702c7484ce3f252cdff (diff) |
QmlDesigner: Fix crash when opening qmlproject while Design mode is open
Fix the order of signal handling, which was changed in
a5935cb27a0609764586302bf109796d74060f3d
but leads to this crash.
The connection to the DesignMode instance still needs to be
delayed to after it has been created in Core plugin's
extensionsInitialized, so do the final initialization as a reaction to
ICore::coreAboutToOpen.
Task-number: QTCREATORBUG-20495
Change-Id: I92d9a4ff689d2f191d2fd368966ca582bf8af2f7
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmldesigner/qmldesignerplugin.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index c5710957da..1aadaa081a 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -198,15 +198,15 @@ bool QmlDesignerPlugin::delayedInitialize() d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::TextTool); d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::PathTool); - connect(Core::DesignMode::instance(), &Core::DesignMode::actionsUpdated, - &d->shortCutManager, &ShortCutManager::updateActions); - return true; } void QmlDesignerPlugin::extensionsInitialized() { - integrateIntoQtCreator(&d->mainWidget); + // delay after Core plugin's extensionsInitialized, so the DesignMode is availabe + connect(Core::ICore::instance(), &Core::ICore::coreAboutToOpen, this, [this] { + integrateIntoQtCreator(&d->mainWidget); + }); } static QStringList allUiQmlFilesforCurrentProject(const Utils::FileName &fileName) @@ -255,6 +255,9 @@ void QmlDesignerPlugin::integrateIntoQtCreator(QWidget *modeWidget) Core::DesignMode::registerDesignWidget(modeWidget, mimeTypes, d->context->context()); + connect(Core::DesignMode::instance(), &Core::DesignMode::actionsUpdated, + &d->shortCutManager, &ShortCutManager::updateActions); + connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged, [this] (Core::IEditor *editor) { if (d && checkIfEditorIsQtQuick(editor) && isInDesignerMode()) changeEditor(); |