diff --git a/src/frame/ccentralwidget.cpp b/src/frame/ccentralwidget.cpp index 75aa32e10..ef055fbd1 100644 --- a/src/frame/ccentralwidget.cpp +++ b/src/frame/ccentralwidget.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2020 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -160,12 +160,20 @@ class DrawBoard::DrawBoard_private { if (toddf) { FileSelectDialog dialog(_borad); + + // Set directory first to avoid GTK native dialog resetting + // filename and name filter when setDirectory is called later + if (!file.isEmpty()) { + dialog.setDirectory(QFileInfo(file).dir().absolutePath()); + } else { + dialog.setDirectory(drawApp->defaultFileDialogPath()); + } + dialog.setNameFilters(drawApp->writableFormatNameFilters()); dialog.selectNameFilter(drawApp->defaultFileDialogNameFilter()); if (!file.isEmpty()) { dialog.selectFile(file); - dialog.setDirectory(QFileInfo(file).dir().absolutePath()); } else { // Add a format suffix to the default filename QString fullFileName = defaultFileName; @@ -180,7 +188,6 @@ class DrawBoard::DrawBoard_private } } dialog.selectFile(fullFileName); - dialog.setDirectory(drawApp->defaultFileDialogPath()); } dialog.exec(); diff --git a/src/frame/cmultiptabbarwidget.cpp b/src/frame/cmultiptabbarwidget.cpp index a1326f110..141716d71 100644 --- a/src/frame/cmultiptabbarwidget.cpp +++ b/src/frame/cmultiptabbarwidget.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2020 - 2023 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2020 - 2026 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -193,7 +193,7 @@ FileSelectDialog::FileSelectDialog(DrawBoard *parent): DFileDialog(parent) this->setAcceptMode(QFileDialog::AcceptSave); //只显示文件夹 - this->setOptions(QFileDialog::DontResolveSymlinks /*| QFileDialog::Option(DontUseNativeDialog)*/); + this->setOptions(QFileDialog::DontResolveSymlinks | QFileDialog::DontUseNativeDialog); //设置显示模式 this->setViewMode(DFileDialog::List);