aboutsummaryrefslogtreecommitdiff
path: root/src/backends/kdialog.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/backends/kdialog.rs')
-rw-r--r--src/backends/kdialog.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/backends/kdialog.rs b/src/backends/kdialog.rs
index e556ddf..21928f8 100644
--- a/src/backends/kdialog.rs
+++ b/src/backends/kdialog.rs
@@ -4,7 +4,9 @@
use std::process;
-use crate::{Choice, Error, FileSelection, Input, Message, Password, Question, Result};
+use crate::{
+ Choice, Error, FileSelection, FileSelectionMode, Input, Message, Password, Question, Result,
+};
/// Subprocess exit codes
///
@@ -139,7 +141,11 @@ impl super::Backend for KDialog {
fn show_file_selection(&self, file_selection: &FileSelection) -> Result<Option<String>> {
let dir = file_selection.path_to_string().ok_or("path not valid")?;
- let args = vec!["--getopenfilename", &dir];
+ let option = match file_selection.mode {
+ FileSelectionMode::Open => "--getopenfilename",
+ FileSelectionMode::Save => "--getsavefilename",
+ };
+ let args = vec![option, &dir];
self.execute(args, &file_selection.title)
.and_then(get_stdout)
}