diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index b283862c467..9ffd402d3ed 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -1078,6 +1078,11 @@ bool Project::isModified() const return !modifiedDocuments().isEmpty(); } +bool Project::isEditModePreferred() const +{ + return true; +} + #if defined(WITH_TESTS) static FilePath constructTestPath(const char *basePath) diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index ab9b55cd47d..22495aa47a1 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -183,6 +183,8 @@ public: QList modifiedDocuments() const; bool isModified() const; + virtual bool isEditModePreferred() const; + signals: void projectFileIsDirty(const Utils::FilePath &path); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f869a9d3cd4..692efcb988b 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2512,12 +2512,13 @@ ProjectExplorerPlugin::OpenProjectResult ProjectExplorerPlugin::openProjects(con } dd->updateActions(); - bool switchToProjectsMode = Utils::anyOf(openedPro, &Project::needsConfiguration); - + const bool switchToProjectsMode = Utils::anyOf(openedPro, &Project::needsConfiguration); + const bool switchToEditMode = Utils::allOf(openedPro, + [](Project *p) { return p->isEditModePreferred(); }); if (!openedPro.isEmpty()) { if (switchToProjectsMode) ModeManager::activateMode(Constants::MODE_SESSION); - else + else if (switchToEditMode) ModeManager::activateMode(Core::Constants::MODE_EDIT); ModeManager::setFocusToCurrentMode(); } diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 7e88a6168a9..e96dadb970b 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -456,6 +456,11 @@ Tasks QmlProject::projectIssues(const Kit *k) const return result; } +bool QmlProject::isEditModePreferred() const +{ + return !isQtDesignStudio(); +} + Project::RestoreResult QmlProject::fromMap(const QVariantMap &map, QString *errorMessage) { RestoreResult result = Project::fromMap(map, errorMessage); diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h index f21f8a5610e..a351d394c7d 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.h +++ b/src/plugins/qmlprojectmanager/qmlproject.h @@ -148,6 +148,8 @@ public: static bool isQtDesignStudio(); + bool isEditModePreferred() const override; + protected: RestoreResult fromMap(const QVariantMap &map, QString *errorMessage) override;