From 398930d3cf596cb6e8e249685960b713dd96a7e5 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 24 Mar 2020 09:44:38 +0100 Subject: [PATCH] ProjectExplorer: Set temporary flag on scratch buffer document Task-number: QTCREATORBUG-23509 Change-Id: Ieb3922030cb1dd4984b91ac24d0396bb19a4a711 Reviewed-by: Eike Ziller --- .../wizards/files/scratch/wizard.json | 3 ++- src/plugins/coreplugin/generatedfile.h | 26 ++++++++++--------- .../projectexplorer/jsonwizard/jsonwizard.cpp | 6 ++++- .../jsonwizard/jsonwizardfilegenerator.cpp | 3 +++ .../jsonwizard/jsonwizardfilegenerator.h | 1 + 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/share/qtcreator/templates/wizards/files/scratch/wizard.json b/share/qtcreator/templates/wizards/files/scratch/wizard.json index aa0efb0e107..7dcaf0ec23c 100644 --- a/share/qtcreator/templates/wizards/files/scratch/wizard.json +++ b/share/qtcreator/templates/wizards/files/scratch/wizard.json @@ -21,7 +21,8 @@ "source": "file.txt", "target": "%{TargetPath}", "overwrite": true, - "openInEditor": true + "openInEditor": true, + "temporary": true } } ] diff --git a/src/plugins/coreplugin/generatedfile.h b/src/plugins/coreplugin/generatedfile.h index 807f2f5166c..7dd987d56fe 100644 --- a/src/plugins/coreplugin/generatedfile.h +++ b/src/plugins/coreplugin/generatedfile.h @@ -36,18 +36,20 @@ class GeneratedFilePrivate; class CORE_EXPORT GeneratedFile { public: - enum Attribute { // Open this file in editor - OpenEditorAttribute = 0x01, - // Open project - OpenProjectAttribute = 0x02, - /* File is generated by external scripts, do not write out, - * see BaseFileWizard::writeFiles() */ - CustomGeneratorAttribute = 0x4, - /* File exists and the user indicated that he wants to keep it */ - KeepExistingFileAttribute = 0x8, - /* Force overwriting of a file without asking the user to keep it */ - ForceOverwrite = 0x10 - }; + enum Attribute { + // Open this file in editor + OpenEditorAttribute = 0x01, + // Open project + OpenProjectAttribute = 0x02, + // File is generated by external scripts, do not write out, see BaseFileWizard::writeFiles() + CustomGeneratorAttribute = 0x4, + // File exists and the user indicated that he wants to keep it + KeepExistingFileAttribute = 0x8, + // Force overwriting of a file without asking the user to keep it + ForceOverwrite = 0x10, + // Mark the document temporary after opening the file + TemporaryFile = 0x20 + }; Q_DECLARE_FLAGS(Attributes, Attribute) GeneratedFile(); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp index 7684de07955..bf878346805 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizard.cpp @@ -33,6 +33,7 @@ #include "../projectexplorerconstants.h" #include "../projecttree.h" #include +#include #include #include @@ -465,11 +466,14 @@ void JsonWizard::openFiles(const JsonWizard::GeneratorFiles &files) openedSomething = true; } if (file.attributes() & Core::GeneratedFile::OpenEditorAttribute) { - if (!Core::EditorManager::openEditor(file.path(), file.editorId())) { + Core::IEditor *editor = Core::EditorManager::openEditor(file.path(), file.editorId()); + if (!editor) { errorMessage = QCoreApplication::translate("ProjectExplorer::JsonWizard", "Failed to open an editor for \"%1\".") .arg(QDir::toNativeSeparators(file.path())); break; + } else if (file.attributes() & Core::GeneratedFile::TemporaryFile) { + editor->document()->setTemporary(true); } openedSomething = true; } diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp index 117369e10b6..173e7a4b0df 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.cpp @@ -69,6 +69,7 @@ bool JsonWizardFileGenerator::setup(const QVariant &data, QString *errorMessage) f.isBinary = tmp.value(QLatin1String("isBinary"), false); f.overwrite = tmp.value(QLatin1String("overwrite"), false); f.openInEditor = tmp.value(QLatin1String("openInEditor"), false); + f.isTemporary = tmp.value(QLatin1String("temporary"), false); f.openAsProject = tmp.value(QLatin1String("openAsProject"), false); f.options = JsonWizard::parseOptions(tmp.value(QLatin1String("options")), errorMessage); @@ -148,6 +149,8 @@ Core::GeneratedFile JsonWizardFileGenerator::generateFile(const File &file, attributes |= Core::GeneratedFile::OpenProjectAttribute; if (JsonWizard::boolFromVariant(file.overwrite, expander)) attributes |= Core::GeneratedFile::ForceOverwrite; + if (JsonWizard::boolFromVariant(file.isTemporary, expander)) + attributes |= Core::GeneratedFile::TemporaryFile; if (file.keepExisting) attributes |= Core::GeneratedFile::KeepExistingFileAttribute; diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h index 52bee65d6e9..3606e43c311 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfilegenerator.h @@ -55,6 +55,7 @@ private: QVariant overwrite = false; QVariant openInEditor = false; QVariant openAsProject = false; + QVariant isTemporary = false; QList options; };