From 1757efdd8507619d5819ae2b5314b4fddbdfc302 Mon Sep 17 00:00:00 2001 From: Erick Navarro Date: Tue, 26 May 2026 19:23:14 -0600 Subject: [PATCH] feat: hot-reload font family from config panel --- src/main.rs | 11 +++++++++++ src/renderer/text.rs | 4 ++++ src/tui_config.rs | 2 +- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index eee2cf0..91e2352 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1009,7 +1009,18 @@ impl App { self.reseed_pane_palettes(); new_cfg.save(); window.set_title(&new_cfg.window.title); + + if self.state.config.font.family != new_cfg.font.family { + self.renderer.reload_font_family(&new_cfg.font.family); + for tab in &mut self.state.tabs { + let current_px = tab.metrics.font_px; + tab.metrics = self.renderer.make_metrics(current_px); + } + } + self.state.config = new_cfg; + self.sync_all_pane_sizes(); + window.request_redraw(); self.state.config_panel = None; } diff --git a/src/renderer/text.rs b/src/renderer/text.rs index e5327d2..a4861f7 100644 --- a/src/renderer/text.rs +++ b/src/renderer/text.rs @@ -88,6 +88,10 @@ impl Renderer { } } + pub fn reload_font_family(&mut self, family: &str) { + self.glyphs = GlyphCache::new(family); + } + /// Compute metrics for a given font size using the shared glyph cache. pub fn make_metrics(&mut self, font_px: f32) -> FontMetrics { FontMetrics::compute(&mut self.glyphs, font_px) diff --git a/src/tui_config.rs b/src/tui_config.rs index 502706d..41d2860 100644 --- a/src/tui_config.rs +++ b/src/tui_config.rs @@ -333,7 +333,7 @@ impl ConfigPanel { } match self.build_config() { Ok(cfg) => { - self.status = Some("Saved. Font/color changes apply on restart.".into()); + self.status = Some("Saved.".into()); ConfigAction::Save(Box::new(cfg)) } Err(e) => {