Skip to content

Commit 56a9740

Browse files
authored
Added SetInitialFilename() to FileDialog, and updated AssetBrowser to use it (#770)
1 parent e7e58ed commit 56a9740

3 files changed

Lines changed: 19 additions & 4 deletions

File tree

Sources/OvEditor/src/OvEditor/Core/EditorActions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,6 +1081,7 @@ bool OvEditor::Core::EditorActions::ImportAsset(const std::string& p_initialDest
10811081

10821082
SaveFileDialog saveLocationDialog("Where to import?");
10831083
saveLocationDialog.SetInitialDirectory(p_initialDestinationDirectory);
1084+
saveLocationDialog.SetInitialFilename(filename);
10841085
saveLocationDialog.DefineExtension(extension, extension);
10851086
saveLocationDialog.Show();
10861087

Sources/OvWindowing/include/OvWindowing/Dialogs/FileDialog.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ namespace OvWindowing::Dialogs
7474
*/
7575
void SetInitialDirectory(const std::string& p_initialDirectory);
7676

77+
/**
78+
* Defines the initial filename pre-populated in the dialog
79+
* @param p_initialFilename
80+
*/
81+
void SetInitialFilename(const std::string& p_initialFilename);
82+
7783
/**
7884
* Show the file dialog
7985
* @param p_flags
@@ -112,6 +118,7 @@ namespace OvWindowing::Dialogs
112118
std::function<int(tagOFNA*)> m_callback;
113119
const std::string m_dialogTitle;
114120
std::string m_initialDirectory;
121+
std::string m_initialFilename;
115122
std::string m_filter;
116123
std::string m_error;
117124
std::string m_filename;

Sources/OvWindowing/src/OvWindowing/Dialogs/FileDialog.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ void OvWindowing::Dialogs::FileDialog::SetInitialDirectory(const std::string & p
3030
m_initialDirectory = p_initialDirectory;
3131
}
3232

33+
void OvWindowing::Dialogs::FileDialog::SetInitialFilename(const std::string& p_initialFilename)
34+
{
35+
m_initialFilename = p_initialFilename;
36+
}
37+
3338
void OvWindowing::Dialogs::FileDialog::Show(EExplorerFlags p_flags)
3439
{
3540
#ifdef _WIN32
@@ -38,6 +43,9 @@ void OvWindowing::Dialogs::FileDialog::Show(EExplorerFlags p_flags)
3843
if (!m_initialDirectory.empty())
3944
m_filepath = m_initialDirectory;
4045

46+
if (!m_initialFilename.empty())
47+
m_filepath = (std::filesystem::path{ m_initialDirectory } / m_initialFilename).string();
48+
4149
m_filepath.resize(MAX_PATH);
4250

4351
ZeroMemory(&ofn, sizeof(ofn));
@@ -72,11 +80,10 @@ void OvWindowing::Dialogs::FileDialog::Show(EExplorerFlags p_flags)
7280
if (m_isSaveDialog)
7381
command += " --save";
7482

75-
if (!m_initialDirectory.empty())
83+
if (!m_initialDirectory.empty() || !m_initialFilename.empty())
7684
{
77-
// Add trailing slash to indicate directory for zenity
78-
command += " --filename=\"" + m_initialDirectory;
79-
if (m_initialDirectory.back() != '/')
85+
command += " --filename=\"" + (std::filesystem::path{ m_initialDirectory } / m_initialFilename).string();
86+
if (m_initialFilename.empty() && m_initialDirectory.back() != '/')
8087
command += "/";
8188
command += "\"";
8289
}

0 commit comments

Comments
 (0)