diff --git a/Siv3D/include/Siv3D/Dialog.hpp b/Siv3D/include/Siv3D/Dialog.hpp index 625ae5459..416cb1317 100644 --- a/Siv3D/include/Siv3D/Dialog.hpp +++ b/Siv3D/include/Siv3D/Dialog.hpp @@ -44,10 +44,11 @@ namespace s3d /// @param filters ダイアログに表示するファイルの拡張子のフィルタ /// @param defaultDirectory ダイアログで表示するデフォルトディレクトリ。空の場合は OS のデフォルト /// @param title ダイアログのタイトル。空の場合は OS のデフォルト + /// @param defaultFileName ダイアログに表示するデフォルトのファイル名 /// @remark この関数はファイルの保存は行いません。戻り値をファイル保存系の関数と組み合わせて使ってください。 /// @return 選択されたファイルパス。選択されなかった場合は none [[nodiscard]] - Optional SaveFile(const Array& filters = {}, FilePathView defaultDirectory = U"", StringView title = U""); + Optional SaveFile(const Array& filters = {}, FilePathView defaultDirectory = U"", StringView title = U"", StringView defaultFileName = U""); /// @brief フォルダ選択ダイアログを表示し、選択されたフォルダを返します。 /// @param defaultDirectory ダイアログで表示するデフォルトディレクトリ。空の場合は OS のデフォルト diff --git a/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp b/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp index 316c3f50d..573a3cb21 100644 --- a/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp +++ b/Siv3D/src/Siv3D-Platform/Linux/Siv3D/Dialog/SivDialog_Linux.cpp @@ -96,7 +96,7 @@ namespace s3d } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView, const StringView) { if (not g_dialogInitialized) { diff --git a/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp b/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp index ef793153d..c976d0a9b 100644 --- a/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp +++ b/Siv3D/src/Siv3D-Platform/Web/Siv3D/Dialog/SivDialog_Web.cpp @@ -71,7 +71,7 @@ namespace s3d } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title, const StringView defaultFileName) { // [Siv3D Web NoSupport] return (none); diff --git a/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp b/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp index 4d8672572..72babe83b 100644 --- a/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp +++ b/Siv3D/src/Siv3D-Platform/WindowsDesktop/Siv3D/Dialog/SivDialog_Windows.cpp @@ -251,7 +251,7 @@ namespace s3d } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView title, const StringView defaultFileName) { ComPtr fileSaveDialog; @@ -279,6 +279,11 @@ namespace s3d // Append file extension fileSaveDialog->SetDefaultExtension(L""); + if (defaultFileName) + { + fileSaveDialog->SetFileName(defaultFileName.toWstr().c_str()); + } + if (HRESULT result = fileSaveDialog->Show(static_cast(SIV3D_ENGINE(Window)->getHandle())); SUCCEEDED(result)) { diff --git a/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm b/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm index f96461e8f..acb907c8f 100644 --- a/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm +++ b/Siv3D/src/Siv3D-Platform/macOS/Siv3D/Dialog/SivDialog_macOS.mm @@ -155,7 +155,7 @@ static bool SetDefaultPath(NSSavePanel* dialog, const FilePathView defaultPath) } } - Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView) + Optional SaveFile(const Array& filters, const FilePathView defaultPath, const StringView, const StringView) { @autoreleasepool {