From a09aeb14e8c5fffe6bdcc33aac52f74528b37e1e Mon Sep 17 00:00:00 2001 From: Danilo Leal <67129314+danilo-leal@users.noreply.github.com> Date: Thu, 22 Jan 2026 10:44:31 -0300 Subject: [PATCH] settings_ui: Fix font weight number field rendering (#47384) Closes https://github.com/zed-industries/zed/issues/47353 Release Notes: - Settings Editor: Fixed a bug with the number field rendering of the font weight setting. --- crates/settings_content/src/theme.rs | 24 +++++++++++++++++++++++- crates/settings_ui/src/settings_ui.rs | 2 +- crates/ui_input/src/number_field.rs | 11 ++++++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/crates/settings_content/src/theme.rs b/crates/settings_content/src/theme.rs index 6106c51ee50546b3abc4084984a0304bed5f4d61..c63536b0749afd055ab4883fc3169b2d1151e3f2 100644 --- a/crates/settings_content/src/theme.rs +++ b/crates/settings_content/src/theme.rs @@ -1270,10 +1270,32 @@ pub enum FontStyleContent { Oblique, } -#[derive(Clone, Copy, Debug, PartialEq, PartialOrd, Serialize, Deserialize, MergeFrom)] +#[derive( + Clone, + Copy, + Debug, + PartialEq, + PartialOrd, + Serialize, + Deserialize, + MergeFrom, + derive_more::FromStr, +)] #[serde(transparent)] pub struct FontWeightContent(pub f32); +impl Display for FontWeightContent { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.0) + } +} + +impl From for FontWeightContent { + fn from(weight: f32) -> Self { + FontWeightContent(weight) + } +} + impl Default for FontWeightContent { fn default() -> Self { Self::NORMAL diff --git a/crates/settings_ui/src/settings_ui.rs b/crates/settings_ui/src/settings_ui.rs index 1ad99252cad2c355182b1560b48e4e2bce7f71cb..831cd2e455cd7986843b02a187f74f9c885deac0 100644 --- a/crates/settings_ui/src/settings_ui.rs +++ b/crates/settings_ui/src/settings_ui.rs @@ -497,7 +497,7 @@ fn init_renderers(cx: &mut App) { .add_basic_renderer::(render_number_field) .add_basic_renderer::(render_number_field) .add_basic_renderer::(render_number_field) - .add_basic_renderer::(render_number_field) + .add_basic_renderer::(render_number_field) .add_basic_renderer::(render_number_field) .add_basic_renderer::(render_number_field) .add_basic_renderer::(render_number_field) diff --git a/crates/ui_input/src/number_field.rs b/crates/ui_input/src/number_field.rs index 6e01c48e67202a78fc444ac0d88aaddc9474ff62..84262a9617718b1f3741ea51b881361ee3f9e7d3 100644 --- a/crates/ui_input/src/number_field.rs +++ b/crates/ui_input/src/number_field.rs @@ -12,7 +12,8 @@ use gpui::{ }; use settings::{ - CenteredPaddingSettings, CodeFade, DelayMs, FontSize, InactiveOpacity, MinimumContrast, + CenteredPaddingSettings, CodeFade, DelayMs, FontSize, FontWeightContent, InactiveOpacity, + MinimumContrast, }; use ui::prelude::*; @@ -106,6 +107,14 @@ macro_rules! impl_newtype_numeric_stepper_int { #[rustfmt::skip] impl_newtype_numeric_stepper_float!(FontWeight, 50., 100., 10., FontWeight::THIN, FontWeight::BLACK); +impl_newtype_numeric_stepper_float!( + FontWeightContent, + 50., + 100., + 10., + FontWeightContent::THIN, + FontWeightContent::BLACK +); impl_newtype_numeric_stepper_float!(CodeFade, 0.1, 0.2, 0.05, 0.0, 0.9); impl_newtype_numeric_stepper_float!(FontSize, 1.0, 4.0, 0.5, 6.0, 72.0); impl_newtype_numeric_stepper_float!(InactiveOpacity, 0.1, 0.2, 0.05, 0.0, 1.0);