From 260547bcb71d505600ca141d68a8a5fa01703db2 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Tue, 20 Jan 2026 16:37:12 +0800 Subject: [PATCH] fix(frame): ensure default filename has correct extension When saving files with the default filename, the code now automatically appends the appropriate file extension based on the selected file filter. This prevents saving files without extensions and ensures proper file association. log: ensure default filename has correct extension bug: https://pms.uniontech.com/bug-view-331447.html --- src/frame/ccentralwidget.cpp | 16 ++++++++++++++-- src/frame/cmultiptabbarwidget.h | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/frame/ccentralwidget.cpp b/src/frame/ccentralwidget.cpp index a7e4aa2b9..75aa32e10 100644 --- a/src/frame/ccentralwidget.cpp +++ b/src/frame/ccentralwidget.cpp @@ -156,7 +156,7 @@ class DrawBoard::DrawBoard_private return _dialog; } - QString execFileSelectDialog(const QString &defualFileName, bool toddf = true, QString file = "") + QString execFileSelectDialog(const QString &defaultFileName, bool toddf = true, QString file = "") { if (toddf) { FileSelectDialog dialog(_borad); @@ -167,7 +167,19 @@ class DrawBoard::DrawBoard_private dialog.selectFile(file); dialog.setDirectory(QFileInfo(file).dir().absolutePath()); } else { - dialog.selectFile(defualFileName); + // Add a format suffix to the default filename + QString fullFileName = defaultFileName; + QFileInfo fileInfo(fullFileName); + if (fileInfo.suffix().isEmpty()) { + QString suffix = dialog.extractSuffix(drawApp->defaultFileDialogNameFilter()); + if (!suffix.isEmpty()) { + if (!suffix.startsWith(".")) + suffix.prepend("."); + if (!fullFileName.endsWith(suffix)) + fullFileName = fullFileName + suffix; + } + } + dialog.selectFile(fullFileName); dialog.setDirectory(drawApp->defaultFileDialogPath()); } dialog.exec(); diff --git a/src/frame/cmultiptabbarwidget.h b/src/frame/cmultiptabbarwidget.h index d829020ad..4a1ef05e8 100644 --- a/src/frame/cmultiptabbarwidget.h +++ b/src/frame/cmultiptabbarwidget.h @@ -52,10 +52,10 @@ class FileSelectDialog: public DFileDialog int exec() override; QString resultFile()const; + QString extractSuffix(const QString &filter); private: void saveSetting(); QString checkAndBuildPath(const QString &path); - QString extractSuffix(const QString &filter); private: QString _resultFile;