From 454682ea3f5c56e7a993847390e8aea4d8b5f98c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 7 Feb 2022 10:06:16 +0100 Subject: [PATCH] Do not enter edit mode when opening a .qmlproject as QDS If the user opens a .qmlproject in QDS mode we do not want to enter the edit mode by default. We check the startup project after opening and calling openEditMode() will determine if we keep the default of opening the edit mode or not. Change-Id: Ic8a7fbefa007d487ec680099544c07fe007c0b29 Reviewed-by: Eike Ziller Reviewed-by: --- src/plugins/projectexplorer/project.cpp | 5 +++++ src/plugins/projectexplorer/project.h | 2 ++ src/plugins/projectexplorer/projectexplorer.cpp | 7 ++++--- src/plugins/qmlprojectmanager/qmlproject.cpp | 5 +++++ src/plugins/qmlprojectmanager/qmlproject.h | 2 ++ 5 files changed, 18 insertions(+), 3 deletions(-) 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;