forked from qt-creator/qt-creator
QmlDesigner: Fix crash when opening qmlproject while Design mode is open
Fix the order of signal handling, which was changed in
a5935cb27a
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>
This commit is contained in:
@@ -198,15 +198,15 @@ bool QmlDesignerPlugin::delayedInitialize()
|
|||||||
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::TextTool);
|
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::TextTool);
|
||||||
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::PathTool);
|
d->viewManager.registerFormEditorToolTakingOwnership(new QmlDesigner::PathTool);
|
||||||
|
|
||||||
connect(Core::DesignMode::instance(), &Core::DesignMode::actionsUpdated,
|
|
||||||
&d->shortCutManager, &ShortCutManager::updateActions);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlDesignerPlugin::extensionsInitialized()
|
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)
|
static QStringList allUiQmlFilesforCurrentProject(const Utils::FileName &fileName)
|
||||||
@@ -255,6 +255,9 @@ void QmlDesignerPlugin::integrateIntoQtCreator(QWidget *modeWidget)
|
|||||||
|
|
||||||
Core::DesignMode::registerDesignWidget(modeWidget, mimeTypes, d->context->context());
|
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) {
|
connect(Core::EditorManager::instance(), &Core::EditorManager::currentEditorChanged, [this] (Core::IEditor *editor) {
|
||||||
if (d && checkIfEditorIsQtQuick(editor) && isInDesignerMode())
|
if (d && checkIfEditorIsQtQuick(editor) && isInDesignerMode())
|
||||||
changeEditor();
|
changeEditor();
|
||||||
|
Reference in New Issue
Block a user