forked from qt-creator/qt-creator
Core: Use better suited file dialog when saving OutputWindow content
QFileDialog::saveFileContent opens a non-modal file dialog which can disappear in the backgtound. Also, on Windows, the dialog is non-native. Use FileUtils::getSaveFilePath and FileSaver, instead. Task-number: QTCREATORBUG-31099 Change-Id: I0c84e149183f632e325b2e62ee9b1c7d7726f207 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -13,9 +13,12 @@
|
||||
|
||||
#include <aggregation/aggregate.h>
|
||||
|
||||
#include <utils/fileutils.h>
|
||||
#include <utils/outputformatter.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
#include <coreplugin/messagemanager.h>
|
||||
|
||||
#include <QAction>
|
||||
#include <QCursor>
|
||||
#include <QElapsedTimer>
|
||||
@@ -294,7 +297,16 @@ void OutputWindow::contextMenuEvent(QContextMenuEvent *event)
|
||||
menu->addSeparator();
|
||||
QAction *saveAction = menu->addAction(Tr::tr("Save Contents..."));
|
||||
connect(saveAction, &QAction::triggered, this, [this] {
|
||||
QFileDialog::saveFileContent(toPlainText().toUtf8(), d->outputFileNameHint);
|
||||
const FilePath file = FileUtils::getSaveFilePath(
|
||||
ICore::dialogParent(), {}, FileUtils::homePath() / d->outputFileNameHint);
|
||||
if (!file.isEmpty()) {
|
||||
QString error;
|
||||
Utils::TextFileFormat format;
|
||||
format.codec = EditorManager::defaultTextCodec();
|
||||
format.lineTerminationMode = EditorManager::defaultLineEnding();
|
||||
if (!format.writeFile(file, toPlainText(), &error))
|
||||
MessageManager::writeDisrupting(error);
|
||||
}
|
||||
});
|
||||
saveAction->setEnabled(!document()->isEmpty());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user