From bbda2672f57de2f432222cf64b47f1f2631d3df7 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Mon, 6 Oct 2025 19:06:44 -0400 Subject: [Rust] Fix save file dialog not respecting default file path Fixes https://github.com/Vector35/binaryninja-api/issues/7268 --- rust/src/interaction/form.rs | 13 ++++--------- rust/src/interaction/handler.rs | 10 ++++------ rust/tests/interaction.rs | 10 ++-------- 3 files changed, 10 insertions(+), 23 deletions(-) (limited to 'rust') diff --git a/rust/src/interaction/form.rs b/rust/src/interaction/form.rs index 534aed74..4cf9f863 100644 --- a/rust/src/interaction/form.rs +++ b/rust/src/interaction/form.rs @@ -101,14 +101,11 @@ pub enum FormInputField { prompt: String, /// File extension to filter on. extension: Option, - /// Default file name to fill. - default_name: Option, default: Option, value: Option, }, DirectoryName { prompt: String, - default_name: Option, default: Option, value: Option, }, @@ -182,14 +179,12 @@ impl FormInputField { BNFormInputFieldType::SaveFileNameFormField => Self::SaveFileName { prompt, extension, - default_name: name_default, - default: string_default, + default: name_default, value: string_result, }, BNFormInputFieldType::DirectoryNameFormField => Self::DirectoryName { prompt, - default_name: name_default, - default: string_default, + default: name_default, value: string_result, }, BNFormInputFieldType::CheckboxFormField => Self::Checkbox { @@ -345,8 +340,8 @@ impl FormInputField { /// Mapping to the [`BNFormInputField::defaultName`] field. pub fn try_default_name(&self) -> Option { match self { - Self::SaveFileName { default_name, .. } => default_name.clone(), - Self::DirectoryName { default_name, .. } => default_name.clone(), + Self::SaveFileName { default, .. } => default.clone(), + Self::DirectoryName { default, .. } => default.clone(), _ => None, } } diff --git a/rust/src/interaction/handler.rs b/rust/src/interaction/handler.rs index 2af63eb1..d4734d34 100644 --- a/rust/src/interaction/handler.rs +++ b/rust/src/interaction/handler.rs @@ -211,15 +211,14 @@ pub trait InteractionHandler: Sync + Send + 'static { &mut self, prompt: &str, extension: Option, - default_name: Option, + default: Option, ) -> Option { let mut form = Form::new(prompt.to_owned()); form.add_field(FormInputField::SaveFileName { prompt: prompt.to_string(), extension, - default: None, + default, value: None, - default_name, }); if !self.get_form_input(&mut form) { return None; @@ -231,13 +230,12 @@ pub trait InteractionHandler: Sync + Send + 'static { fn get_directory_name_input( &mut self, prompt: &str, - default_name: Option, + default: Option, ) -> Option { let mut form = Form::new(prompt.to_owned()); form.add_field(FormInputField::DirectoryName { prompt: prompt.to_string(), - default_name, - default: None, + default, value: None, }); if !self.get_form_input(&mut form) { diff --git a/rust/tests/interaction.rs b/rust/tests/interaction.rs index 5b59a436..2f38241c 100644 --- a/rust/tests/interaction.rs +++ b/rust/tests/interaction.rs @@ -94,14 +94,9 @@ impl InteractionHandler for MyInteractionHandler { FormInputField::DirectoryName { ref mut value, default, - default_name, .. } => { - let new_value = format!( - "example{}{}", - default.clone().unwrap_or_default(), - default_name.clone().unwrap_or_default() - ); + let new_value = format!("example{}", default.clone().unwrap_or_default(),); *value = Some(new_value); true } @@ -134,7 +129,6 @@ fn test_get_directory_default() { let mut my_form = Form::new("get_dir_default"); my_form.add_field(FormInputField::DirectoryName { prompt: "get_dir_default".to_string(), - default_name: Some("_default_name".to_string()), default: Some("_default".to_string()), value: None, }); @@ -142,7 +136,7 @@ fn test_get_directory_default() { assert_eq!(my_form.prompt(), true); assert_eq!( my_form.fields[0].try_value_string(), - Some("example_default_default_name".to_string()) + Some("example_default".to_string()) ) } -- cgit v1.3.1