From bb31a97e22c7d47a2067d9f88265f7738010e70e Mon Sep 17 00:00:00 2001 From: Anthony Date: Thu, 9 Oct 2025 12:02:56 -0400 Subject: [PATCH] Deduplicate terminal settings and fix dropdown toggle bug --- crates/settings_ui/src/page_data.rs | 187 -------------------------- crates/settings_ui/src/settings_ui.rs | 10 +- 2 files changed, 9 insertions(+), 188 deletions(-) diff --git a/crates/settings_ui/src/page_data.rs b/crates/settings_ui/src/page_data.rs index 7288ffcee5f1d882d540aeee6c2ef131acb19bbf..2e533806028e6f4806e817f603039ab1fe6c5f94 100644 --- a/crates/settings_ui/src/page_data.rs +++ b/crates/settings_ui/src/page_data.rs @@ -2766,150 +2766,6 @@ pub(crate) fn settings_data() -> Vec { files: USER, metadata: None, }), - SettingsPageItem::SettingItem(SettingItem { - title: "Blinking", - description: "Sets the cursor blinking behavior in the terminal", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.blinking - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content.terminal.get_or_insert_default().blinking - }, - }), - files: USER, - metadata: None, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Cursor Shape", - description: "Default cursor shape for the terminal", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.cursor_shape - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .cursor_shape - }, - }), - files: USER, - metadata: None, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Alternate Scroll", - description: "Sets whether Alternate Scroll mode is active by default", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.alternate_scroll - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .alternate_scroll - }, - }), - files: USER, - metadata: None, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Option As Meta", - description: "Sets whether the option key behaves as the meta key", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.option_as_meta - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .option_as_meta - }, - }), - files: USER, - metadata: None, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Copy On Select", - description: "Whether selecting text in the terminal automatically copies to clipboard", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.copy_on_select - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .copy_on_select - }, - }), - files: USER, - metadata: None, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Keep Selection On Copy", - description: "Whether to keep the text selection after copying it to the clipboard", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.keep_selection_on_copy - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .keep_selection_on_copy - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Max Scroll History Lines", - description: "The maximum number of lines to keep in the scrollback history", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.max_scroll_history_lines - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .max_scroll_history_lines - }, - }), - metadata: None, - files: USER, - }), SettingsPageItem::SectionHeader("Outline Panel"), SettingsPageItem::SettingItem(SettingItem { title: "Outline Panel Button", @@ -4491,49 +4347,6 @@ pub(crate) fn settings_data() -> Vec { metadata: None, files: USER, }), - SettingsPageItem::SectionHeader("Layout Settings"), - SettingsPageItem::SettingItem(SettingItem { - title: "Default Width", - description: "Default width when the terminal is docked to the left or right (in pixels)", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.default_width - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .default_width - }, - }), - metadata: None, - files: USER, - }), - SettingsPageItem::SettingItem(SettingItem { - title: "Default Height", - description: "Default height when the terminal is docked to the bottom (in pixels)", - field: Box::new(SettingField { - pick: |settings_content| { - if let Some(terminal) = &settings_content.terminal { - &terminal.default_height - } else { - &None - } - }, - pick_mut: |settings_content| { - &mut settings_content - .terminal - .get_or_insert_default() - .default_height - }, - }), - metadata: None, - files: USER, - }), SettingsPageItem::SectionHeader("Advanced Settings"), SettingsPageItem::SettingItem(SettingItem { title: "Max Scroll History Lines", diff --git a/crates/settings_ui/src/settings_ui.rs b/crates/settings_ui/src/settings_ui.rs index 24fb6f7588be128335c99f376a7f5417e0d813d9..527c05f568497eb9dfb2c81b8e61708e2dbfb12d 100644 --- a/crates/settings_ui/src/settings_ui.rs +++ b/crates/settings_ui/src/settings_ui.rs @@ -461,6 +461,14 @@ fn init_renderers(cx: &mut App) { render_dropdown(*settings_field, file, window, cx) }) .add_renderer::(|settings_field, file, _, window, cx| { + let variants = || -> &'static [settings::ShowMinimap] { + ::VARIANTS + }; + let labels = || -> &'static [&'static str] { + ::VARIANTS + }; + dbg!(variants(), labels()); + render_dropdown(*settings_field, file, window, cx) }) .add_renderer::(|settings_field, file, _, window, cx| { @@ -2269,7 +2277,7 @@ where labels()[variants().iter().position(|v| *v == current_value).unwrap()]; DropdownMenu::new( - "dropdown", + SharedString::from(format!("dropdown-{}", field.type_name())), current_value_label.to_title_case(), ContextMenu::build(window, cx, move |mut menu, _, _| { for (&value, &label) in std::iter::zip(variants(), labels()) {