PE: Close generated files silently if they have an editor

Omits the original request whether to save a modified file
if the files are opened inside QC, but it ensures to format
the correct file content instead of using some cached
content.

Fixes: QTCREATORBUG-29904
Change-Id: I3b3f3e53fb811288a208376559243bea01d0d4a4
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Christian Stenger
2023-11-20 13:36:06 +01:00
parent 7125862212
commit 9c07e7ea7c

View File

@@ -11,6 +11,7 @@
#include "../projectexplorertr.h" #include "../projectexplorertr.h"
#include "../projecttree.h" #include "../projecttree.h"
#include <coreplugin/editormanager/documentmodel.h>
#include <coreplugin/editormanager/editormanager.h> #include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <coreplugin/messagemanager.h> #include <coreplugin/messagemanager.h>
@@ -351,6 +352,14 @@ void JsonWizard::accept()
return; return;
} }
const QList<Core::IDocument *> documentsToClose
= transform(m_files, [](const GeneratorFile &file) -> Core::IDocument * {
if ((file.file.attributes() & Core::GeneratedFile::OpenEditorAttribute) == 0)
return nullptr;
return Core::DocumentModel::documentForFilePath(file.file.filePath());
});
Core::EditorManager::closeDocuments(documentsToClose, /*askAboutModifiedEditors=*/false);
emit preWriteFiles(m_files); emit preWriteFiles(m_files);
if (!JsonWizardGenerator::writeFiles(this, &m_files, &errorMessage)) { if (!JsonWizardGenerator::writeFiles(this, &m_files, &errorMessage)) {
if (!errorMessage.isEmpty()) if (!errorMessage.isEmpty())