From f1d777434b391d8f60218e860fff56d76453d1b7 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Sat, 27 Jul 2024 13:02:27 -0400 Subject: [PATCH] ui: Give `NumericStepper`s an ID (#15344) This PR gives the `NumericStepper` component an ID. This prevents the UI and buffer font size settings controls from having their increment/decrement buttons visually change when the other one is pressed. Release Notes: - N/A --- crates/editor/src/editor_settings_controls.rs | 1 + crates/settings_ui/src/appearance_settings_controls.rs | 1 + crates/title_bar/src/application_menu.rs | 2 ++ crates/ui/src/components/numeric_stepper.rs | 4 ++++ 4 files changed, 8 insertions(+) diff --git a/crates/editor/src/editor_settings_controls.rs b/crates/editor/src/editor_settings_controls.rs index 09f01837ee..82847a6491 100644 --- a/crates/editor/src/editor_settings_controls.rs +++ b/crates/editor/src/editor_settings_controls.rs @@ -140,6 +140,7 @@ impl RenderOnce for BufferFontSizeControl { .gap_2() .child(Icon::new(IconName::FontSize)) .child(NumericStepper::new( + "buffer-font-size", value.to_string(), move |_, cx| { Self::write(value - px(1.), cx); diff --git a/crates/settings_ui/src/appearance_settings_controls.rs b/crates/settings_ui/src/appearance_settings_controls.rs index 1947c8be0a..c12eba18af 100644 --- a/crates/settings_ui/src/appearance_settings_controls.rs +++ b/crates/settings_ui/src/appearance_settings_controls.rs @@ -260,6 +260,7 @@ impl RenderOnce for UiFontSizeControl { .gap_2() .child(Icon::new(IconName::FontSize)) .child(NumericStepper::new( + "ui-font-size", value.to_string(), move |_, cx| { Self::write(value - px(1.), cx); diff --git a/crates/title_bar/src/application_menu.rs b/crates/title_bar/src/application_menu.rs index a1e92865d3..47d4818da5 100644 --- a/crates/title_bar/src/application_menu.rs +++ b/crates/title_bar/src/application_menu.rs @@ -26,6 +26,7 @@ impl RenderOnce for ApplicationMenu { .child(Label::new("Buffer Font Size")) .child( NumericStepper::new( + "buffer-font-size", theme::get_buffer_font_size(cx).to_string(), |_, cx| { cx.dispatch_action(Box::new( @@ -61,6 +62,7 @@ impl RenderOnce for ApplicationMenu { .child(Label::new("UI Font Size")) .child( NumericStepper::new( + "ui-font-size", theme::get_ui_font_size(cx).to_string(), |_, cx| { cx.dispatch_action(Box::new( diff --git a/crates/ui/src/components/numeric_stepper.rs b/crates/ui/src/components/numeric_stepper.rs index 16946588ba..64ea79f21c 100644 --- a/crates/ui/src/components/numeric_stepper.rs +++ b/crates/ui/src/components/numeric_stepper.rs @@ -4,6 +4,7 @@ use crate::{prelude::*, IconButtonShape}; #[derive(IntoElement)] pub struct NumericStepper { + id: ElementId, value: SharedString, on_decrement: Box, on_increment: Box, @@ -14,11 +15,13 @@ pub struct NumericStepper { impl NumericStepper { pub fn new( + id: impl Into, value: impl Into, on_decrement: impl Fn(&ClickEvent, &mut WindowContext) + 'static, on_increment: impl Fn(&ClickEvent, &mut WindowContext) + 'static, ) -> Self { Self { + id: id.into(), value: value.into(), on_decrement: Box::new(on_decrement), on_increment: Box::new(on_increment), @@ -47,6 +50,7 @@ impl RenderOnce for NumericStepper { let icon_size = IconSize::Small; h_flex() + .id(self.id) .gap_1() .map(|element| { if let Some(on_reset) = self.on_reset {