diff --git a/crates/assistant/src/inline_assistant.rs b/crates/assistant/src/inline_assistant.rs index cb4ada5f08896e498559fca04ba7fea5d0a7ef2f..eb154ea0209a9cdac03c6ea31fc1fd8b11d184df 100644 --- a/crates/assistant/src/inline_assistant.rs +++ b/crates/assistant/src/inline_assistant.rs @@ -2227,7 +2227,7 @@ impl PromptEditor { }, font_family: settings.buffer_font.family.clone(), font_fallbacks: settings.buffer_font.fallbacks.clone(), - font_size: settings.buffer_font_size.into(), + font_size: settings.buffer_font_size(cx).into(), font_weight: settings.buffer_font.weight, line_height: relative(settings.buffer_line_height.value()), ..Default::default() diff --git a/crates/assistant/src/terminal_inline_assistant.rs b/crates/assistant/src/terminal_inline_assistant.rs index f0a7a2d55368956fde56d80d3538e62fe1649002..e8b049371b2c1fcd7392f252691f275c143c910b 100644 --- a/crates/assistant/src/terminal_inline_assistant.rs +++ b/crates/assistant/src/terminal_inline_assistant.rs @@ -1049,7 +1049,7 @@ impl PromptEditor { }, font_family: settings.buffer_font.family.clone(), font_fallbacks: settings.buffer_font.fallbacks.clone(), - font_size: settings.buffer_font_size.into(), + font_size: settings.buffer_font_size(cx).into(), font_weight: settings.buffer_font.weight, line_height: relative(settings.buffer_line_height.value()), ..Default::default() diff --git a/crates/assistant2/src/inline_prompt_editor.rs b/crates/assistant2/src/inline_prompt_editor.rs index c1764cf30d285b84e175a17f29681a36e4a0f066..33232469033705629a586ede54eaaa51f023342d 100644 --- a/crates/assistant2/src/inline_prompt_editor.rs +++ b/crates/assistant2/src/inline_prompt_editor.rs @@ -56,7 +56,7 @@ impl EventEmitter for PromptEditor {} impl Render for PromptEditor { fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { - let ui_font_size = ThemeSettings::get_global(cx).ui_font_size; + let ui_font_size = ThemeSettings::get_global(cx).ui_font_size(cx); let mut buttons = Vec::new(); let left_gutter_width = match &self.mode { diff --git a/crates/editor/src/commit_tooltip.rs b/crates/editor/src/commit_tooltip.rs index 4bcb73f8ca5232e4d7388ff259faaabef3fed75e..b9a3a444f72a0badd10d00fc8df5b08a9e12a389 100644 --- a/crates/editor/src/commit_tooltip.rs +++ b/crates/editor/src/commit_tooltip.rs @@ -210,7 +210,7 @@ impl Render for CommitTooltip { .as_ref() .and_then(|details| details.pull_request.clone()); - let ui_font_size = ThemeSettings::get_global(cx).ui_font_size; + let ui_font_size = ThemeSettings::get_global(cx).ui_font_size(cx); let message_max_height = window.line_height() * 12 + (ui_font_size / 0.4); tooltip_container(window, cx, move |this, _, cx| { diff --git a/crates/editor/src/editor_settings_controls.rs b/crates/editor/src/editor_settings_controls.rs index 6275ec97a18ba09e5628f86a25186135e1ffe6e4..9e22c6439317317edee25301418aeaa14e4feca6 100644 --- a/crates/editor/src/editor_settings_controls.rs +++ b/crates/editor/src/editor_settings_controls.rs @@ -125,8 +125,7 @@ impl EditableSettingControl for BufferFontSizeControl { } fn read(cx: &App) -> Self::Value { - let settings = ThemeSettings::get_global(cx); - settings.buffer_font_size + ThemeSettings::get_global(cx).buffer_font_size(cx) } fn apply( diff --git a/crates/editor/src/hover_popover.rs b/crates/editor/src/hover_popover.rs index e4d7676a7fdd1b6c48094532d1e2251ac8372070..a343dbf3234047d0089509876aa415a14788bbb8 100644 --- a/crates/editor/src/hover_popover.rs +++ b/crates/editor/src/hover_popover.rs @@ -339,7 +339,7 @@ fn show_hover( base_text_style.refine(&TextStyleRefinement { font_family: Some(settings.ui_font.family.clone()), font_fallbacks: settings.ui_font.fallbacks.clone(), - font_size: Some(settings.ui_font_size.into()), + font_size: Some(settings.ui_font_size(cx).into()), color: Some(cx.theme().colors().editor_foreground), background_color: Some(gpui::transparent_black()), diff --git a/crates/editor/src/signature_help.rs b/crates/editor/src/signature_help.rs index c75e45c1e4fe72c5b2c5a48f0e9c53d901cb163d..dbad782766caf073b73c74254d2b517c7881c716 100644 --- a/crates/editor/src/signature_help.rs +++ b/crates/editor/src/signature_help.rs @@ -206,7 +206,7 @@ impl Editor { color: cx.theme().colors().text, font_family: settings.buffer_font.family.clone(), font_fallbacks: settings.buffer_font.fallbacks.clone(), - font_size: settings.buffer_font_size.into(), + font_size: settings.buffer_font_size(cx).into(), font_weight: settings.buffer_font.weight, line_height: relative(settings.buffer_line_height.value()), ..Default::default() diff --git a/crates/git_ui/src/commit_modal.rs b/crates/git_ui/src/commit_modal.rs index e61b8faa4a37bc78c1a498f462bd1ada4fc6fb82..6cc67e11496dbf57a81661475fc27ed164067a53 100644 --- a/crates/git_ui/src/commit_modal.rs +++ b/crates/git_ui/src/commit_modal.rs @@ -141,7 +141,7 @@ impl CommitModal { let settings = ThemeSettings::get_global(cx); let line_height = relative(settings.buffer_line_height.value()) - .to_pixels(settings.buffer_font_size.into(), window.rem_size()); + .to_pixels(settings.buffer_font_size(cx).into(), window.rem_size()); v_flex() .justify_between() diff --git a/crates/recent_projects/src/ssh_connections.rs b/crates/recent_projects/src/ssh_connections.rs index ea733c213742d7a8d80a23ddd74807bf7e9f5e41..f30dc190e1f5d101e98c68a03b4e7c9739427cb7 100644 --- a/crates/recent_projects/src/ssh_connections.rs +++ b/crates/recent_projects/src/ssh_connections.rs @@ -186,7 +186,7 @@ impl SshPrompt { let refinement = TextStyleRefinement { font_family: Some(theme.buffer_font.family.clone()), font_features: Some(FontFeatures::disable_ligatures()), - font_size: Some(theme.buffer_font_size.into()), + font_size: Some(theme.buffer_font_size(cx).into()), color: Some(cx.theme().colors().editor_foreground), background_color: Some(gpui::transparent_black()), ..Default::default() diff --git a/crates/repl/src/notebook/cell.rs b/crates/repl/src/notebook/cell.rs index 7658a106e0eacd0413ed3de51291f839aba11bf3..d4df0f60f8a7dc1123874316a12bd7801aa091ef 100644 --- a/crates/repl/src/notebook/cell.rs +++ b/crates/repl/src/notebook/cell.rs @@ -186,7 +186,7 @@ impl Cell { let refinement = TextStyleRefinement { font_family: Some(theme.buffer_font.family.clone()), - font_size: Some(theme.buffer_font_size.into()), + font_size: Some(theme.buffer_font_size(cx).into()), color: Some(cx.theme().colors().editor_foreground), background_color: Some(gpui::transparent_black()), ..Default::default() diff --git a/crates/repl/src/outputs/table.rs b/crates/repl/src/outputs/table.rs index 8d9168234261a244149ec900fbf5d07cdbaeceba..04eb2cc6e73d4e25a1c9476f5a2fa2f120a00bc7 100644 --- a/crates/repl/src/outputs/table.rs +++ b/crates/repl/src/outputs/table.rs @@ -94,7 +94,7 @@ impl TableView { let text_system = window.text_system(); let text_style = window.text_style(); let text_font = ThemeSettings::get_global(cx).buffer_font.clone(); - let font_size = ThemeSettings::get_global(cx).buffer_font_size; + let font_size = ThemeSettings::get_global(cx).buffer_font_size(cx); let mut runs = [TextRun { len: 0, font: text_font, diff --git a/crates/settings_ui/src/appearance_settings_controls.rs b/crates/settings_ui/src/appearance_settings_controls.rs index fb373667c1ff27dada5e5b8f22065d8c70b6ed69..d1cae1d8a77e9cb220574a9fac8b7b6422d84258 100644 --- a/crates/settings_ui/src/appearance_settings_controls.rs +++ b/crates/settings_ui/src/appearance_settings_controls.rs @@ -239,8 +239,7 @@ impl EditableSettingControl for UiFontSizeControl { } fn read(cx: &App) -> Self::Value { - let settings = ThemeSettings::get_global(cx); - settings.ui_font_size + ThemeSettings::get_global(cx).ui_font_size(cx) } fn apply( diff --git a/crates/theme/src/settings.rs b/crates/theme/src/settings.rs index 37359271157045c425de144dad43afca8ae9fbdc..9b6c6a0c820e706df1422abac562f79ce3965aab 100644 --- a/crates/theme/src/settings.rs +++ b/crates/theme/src/settings.rs @@ -95,13 +95,17 @@ pub struct ThemeSettings { /// as well as the size of a [gpui::Rems] unit. /// /// Changing this will impact the size of all UI elements. - pub ui_font_size: Pixels, + /// + /// Use [ThemeSettings::ui_font_size] to access this. + ui_font_size: Pixels, /// The font used for UI elements. pub ui_font: Font, /// The font size used for buffers, and the terminal. /// /// The terminal font size can be overridden using it's own setting. - pub buffer_font_size: Pixels, + /// + /// Use [ThemeSettings::buffer_font_size] to access this. + buffer_font_size: Pixels, /// The font used for buffers, and the terminal. /// /// The terminal font family can be overridden using it's own setting. @@ -569,6 +573,14 @@ impl ThemeSettings { clamp_font_size(font_size) } + /// Returns the UI font size. + pub fn ui_font_size(&self, cx: &App) -> Pixels { + let font_size = cx + .try_global::() + .map_or(self.ui_font_size, |size| size.0); + clamp_font_size(font_size) + } + // TODO: Rename: `line_height` -> `buffer_line_height` /// Returns the buffer's line height. pub fn line_height(&self) -> f32 { @@ -715,14 +727,14 @@ pub fn setup_ui_font(window: &mut Window, cx: &mut App) -> gpui::Font { /// Gets the adjusted UI font size. pub fn get_ui_font_size(cx: &App) -> Pixels { - let ui_font_size = ThemeSettings::get_global(cx).ui_font_size; + let ui_font_size = ThemeSettings::get_global(cx).ui_font_size(cx); cx.try_global::() .map_or(ui_font_size, |adjusted_size| adjusted_size.0) } /// Sets the adjusted UI font size. pub fn adjust_ui_font_size(cx: &mut App, mut f: impl FnMut(&mut Pixels)) { - let ui_font_size = ThemeSettings::get_global(cx).ui_font_size; + let ui_font_size = ThemeSettings::get_global(cx).ui_font_size(cx); let mut adjusted_size = cx .try_global::() .map_or(ui_font_size, |adjusted_size| adjusted_size.0); diff --git a/crates/theme/src/theme.rs b/crates/theme/src/theme.rs index e62910b6819d8d3ec5e793a2f52a7fd19d30c1df..bebf6f8aa7b10de4199f5fc1f44946e57521467b 100644 --- a/crates/theme/src/theme.rs +++ b/crates/theme/src/theme.rs @@ -103,9 +103,9 @@ pub fn init(themes_to_load: LoadThemes, cx: &mut App) { ThemeSettings::register(cx); FontFamilyCache::init_global(cx); - let mut prev_buffer_font_size = ThemeSettings::get_global(cx).buffer_font_size; + let mut prev_buffer_font_size = ThemeSettings::get_global(cx).buffer_font_size(cx); cx.observe_global::(move |cx| { - let buffer_font_size = ThemeSettings::get_global(cx).buffer_font_size; + let buffer_font_size = ThemeSettings::get_global(cx).buffer_font_size(cx); if buffer_font_size != prev_buffer_font_size { prev_buffer_font_size = buffer_font_size; reset_buffer_font_size(cx); diff --git a/crates/ui/src/components/context_menu.rs b/crates/ui/src/components/context_menu.rs index 03e5fa407db791f87f1f338f3e6040b3ac77a1db..4bd69f506cd425d93e335c55317f07af638f5d25 100644 --- a/crates/ui/src/components/context_menu.rs +++ b/crates/ui/src/components/context_menu.rs @@ -507,7 +507,7 @@ impl ContextMenuItem { impl Render for ContextMenu { fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { - let ui_font_size = ThemeSettings::get_global(cx).ui_font_size; + let ui_font_size = ThemeSettings::get_global(cx).ui_font_size(cx); let aside = self .documentation_aside diff --git a/crates/ui/src/styles/typography.rs b/crates/ui/src/styles/typography.rs index c575e734756ac61367949e66332cfcb33d0c2935..d0f05b6cb2355cf1be254a43db793b34d13b8ab3 100644 --- a/crates/ui/src/styles/typography.rs +++ b/crates/ui/src/styles/typography.rs @@ -140,8 +140,8 @@ impl TextSize { Self::Default => rems_from_px(14.), Self::Small => rems_from_px(12.), Self::XSmall => rems_from_px(10.), - Self::Ui => rems_from_px(theme_settings.ui_font_size.into()), - Self::Editor => rems_from_px(theme_settings.buffer_font_size.into()), + Self::Ui => rems_from_px(theme_settings.ui_font_size(cx).into()), + Self::Editor => rems_from_px(theme_settings.buffer_font_size(cx).into()), } } } diff --git a/crates/ui_macros/src/dynamic_spacing.rs b/crates/ui_macros/src/dynamic_spacing.rs index d2d6d5d23ba6c2a07d00dc9a55bb0fee7ac31691..a8890aca6b71f4e9c120a2847086ed9dda6ccc69 100644 --- a/crates/ui_macros/src/dynamic_spacing.rs +++ b/crates/ui_macros/src/dynamic_spacing.rs @@ -157,7 +157,7 @@ pub fn derive_spacing(input: TokenStream) -> TokenStream { /// Returns the spacing value in pixels. pub fn px(&self, cx: &App) -> Pixels { - let ui_font_size_f32: f32 = ThemeSettings::get_global(cx).ui_font_size.into(); + let ui_font_size_f32: f32 = ThemeSettings::get_global(cx).ui_font_size(cx).into(); px(ui_font_size_f32 * self.spacing_ratio(cx)) } } diff --git a/crates/zed/src/zed/linux_prompts.rs b/crates/zed/src/zed/linux_prompts.rs index 09d1eabf84a8a5c33f68d73540a3dac84eb3b256..e6c2bf62b1c882e0f9e6c27efea8a7fd17a9560b 100644 --- a/crates/zed/src/zed/linux_prompts.rs +++ b/crates/zed/src/zed/linux_prompts.rs @@ -39,7 +39,7 @@ pub fn fallback_prompt_renderer( let mut base_text_style = window.text_style(); base_text_style.refine(&TextStyleRefinement { font_family: Some(settings.ui_font.family.clone()), - font_size: Some(settings.ui_font_size.into()), + font_size: Some(settings.ui_font_size(cx).into()), color: Some(ui::Color::Muted.color(cx)), ..Default::default() });