ui: Track changes to UI font size made via actions with settings (#23265)

Fixes #5380

Closes #5380

Release Notes:

- Font size changes made with actions are now persisted in user settings
This commit is contained in:
Piotr Osiewicz 2025-01-17 00:28:18 +01:00 committed by GitHub
parent 24495f09f9
commit 795376cb07
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 89 additions and 156 deletions

View file

@ -38,14 +38,14 @@ use release_channel::{AppCommitSha, ReleaseChannel};
use rope::Rope;
use search::project_search::ProjectSearchBar;
use settings::{
initial_project_settings_content, initial_tasks_content, KeymapFile, Settings, SettingsStore,
DEFAULT_KEYMAP_PATH, VIM_KEYMAP_PATH,
initial_project_settings_content, initial_tasks_content, update_settings_file, KeymapFile,
Settings, SettingsStore, DEFAULT_KEYMAP_PATH, VIM_KEYMAP_PATH,
};
use std::any::TypeId;
use std::path::PathBuf;
use std::{borrow::Cow, ops::Deref, path::Path, sync::Arc};
use terminal_view::terminal_panel::{self, TerminalPanel};
use theme::ActiveTheme;
use theme::{ActiveTheme, ThemeSettings};
use util::{asset_str, ResultExt};
use uuid::Uuid;
use vim_mode_setting::VimModeSetting;
@ -454,9 +454,6 @@ fn register_actions(
OpenListener::global(cx).open_urls(vec![action.url.clone()])
})
.register_action(|_, action: &OpenBrowser, cx| cx.open_url(&action.url))
.register_action(move |_, _: &zed_actions::IncreaseBufferFontSize, cx| {
theme::adjust_buffer_font_size(cx, |size| *size += px(1.0))
})
.register_action(|workspace, _: &workspace::Open, cx| {
workspace
.client()
@ -492,29 +489,68 @@ fn register_actions(
})
.detach()
})
.register_action(move |_, _: &zed_actions::DecreaseBufferFontSize, cx| {
theme::adjust_buffer_font_size(cx, |size| *size -= px(1.0))
.register_action({
let fs = app_state.fs.clone();
move |_, _: &zed_actions::IncreaseUiFontSize, cx| {
update_settings_file::<ThemeSettings>(fs.clone(), cx, move |settings, cx| {
let buffer_font_size = ThemeSettings::clamp_font_size(
ThemeSettings::get_global(cx).ui_font_size + px(1.),
);
let _ = settings.ui_font_size.insert(buffer_font_size.into());
});
}
})
.register_action(move |_, _: &zed_actions::ResetBufferFontSize, cx| {
theme::reset_buffer_font_size(cx)
.register_action({
let fs = app_state.fs.clone();
move |_, _: &zed_actions::DecreaseUiFontSize, cx| {
update_settings_file::<ThemeSettings>(fs.clone(), cx, move |settings, cx| {
let buffer_font_size = ThemeSettings::clamp_font_size(
ThemeSettings::get_global(cx).ui_font_size - px(1.),
);
let _ = settings.ui_font_size.insert(buffer_font_size.into());
});
}
})
.register_action(move |_, _: &zed_actions::IncreaseUiFontSize, cx| {
theme::adjust_ui_font_size(cx, |size| *size += px(1.0))
.register_action({
let fs = app_state.fs.clone();
move |_, _: &zed_actions::ResetUiFontSize, cx| {
update_settings_file::<ThemeSettings>(fs.clone(), cx, move |settings, _| {
let _ = settings.ui_font_size.take();
});
}
})
.register_action(move |_, _: &zed_actions::DecreaseUiFontSize, cx| {
theme::adjust_ui_font_size(cx, |size| *size -= px(1.0))
.register_action({
let fs = app_state.fs.clone();
move |_, _: &zed_actions::IncreaseBufferFontSize, cx| {
update_settings_file::<ThemeSettings>(fs.clone(), cx, move |settings, cx| {
let buffer_font_size = ThemeSettings::clamp_font_size(
ThemeSettings::get_global(cx).buffer_font_size() + px(1.),
);
let _ = settings.buffer_font_size.insert(buffer_font_size.into());
});
}
})
.register_action(move |_, _: &zed_actions::ResetUiFontSize, cx| {
theme::reset_ui_font_size(cx)
.register_action({
let fs = app_state.fs.clone();
move |_, _: &zed_actions::DecreaseBufferFontSize, cx| {
update_settings_file::<ThemeSettings>(fs.clone(), cx, move |settings, cx| {
let buffer_font_size = ThemeSettings::clamp_font_size(
ThemeSettings::get_global(cx).buffer_font_size() - px(1.),
);
let _ = settings.buffer_font_size.insert(buffer_font_size.into());
});
}
})
.register_action(move |_, _: &zed_actions::IncreaseBufferFontSize, cx| {
theme::adjust_buffer_font_size(cx, |size| *size += px(1.0))
})
.register_action(move |_, _: &zed_actions::DecreaseBufferFontSize, cx| {
theme::adjust_buffer_font_size(cx, |size| *size -= px(1.0))
})
.register_action(move |_, _: &zed_actions::ResetBufferFontSize, cx| {
theme::reset_buffer_font_size(cx)
.register_action({
let fs = app_state.fs.clone();
move |_, _: &zed_actions::ResetBufferFontSize, cx| {
update_settings_file::<ThemeSettings>(fs.clone(), cx, move |settings, _| {
let _ = settings.buffer_font_size.take();
});
}
})
.register_action(install_cli)
.register_action(|_, _: &install_cli::RegisterZedScheme, cx| {