window: scale sidebar fonts with zoom level
This commit is contained in:
parent
3bcd6af23c
commit
c19c2cbd1d
1 changed files with 21 additions and 0 deletions
|
|
@ -63,6 +63,7 @@ pub mod imp {
|
|||
pub current_article_id: RefCell<Option<String>>,
|
||||
pub mark_unread_guard: RefCell<bool>,
|
||||
pub pending_restore_id: RefCell<Option<String>>,
|
||||
pub sidebar_zoom_css: std::cell::OnceCell<gtk4::CssProvider>,
|
||||
}
|
||||
|
||||
#[glib::object_subclass]
|
||||
|
|
@ -140,6 +141,16 @@ pub mod imp {
|
|||
let zoom = settings.double("zoom-level");
|
||||
self.web_view.set_zoom_level(zoom);
|
||||
|
||||
// Set up sidebar font zoom CSS provider
|
||||
let zoom_css = gtk4::CssProvider::new();
|
||||
gtk4::style_context_add_provider_for_display(
|
||||
>k4::gdk::Display::default().unwrap(),
|
||||
&zoom_css,
|
||||
gtk4::STYLE_PROVIDER_PRIORITY_APPLICATION,
|
||||
);
|
||||
self.sidebar_zoom_css.set(zoom_css).ok();
|
||||
self.update_sidebar_zoom(zoom);
|
||||
|
||||
// Persist sidebar width while dragging (only when visible)
|
||||
let s2 = settings.clone();
|
||||
let sidebar_weak = self.sidebar_toolbar.downgrade();
|
||||
|
|
@ -794,16 +805,26 @@ pub mod imp {
|
|||
|
||||
// ── Zoom ──────────────────────────────────────────────────────────────
|
||||
|
||||
fn update_sidebar_zoom(&self, level: f64) {
|
||||
if let Some(css) = self.sidebar_zoom_css.get() {
|
||||
css.load_from_string(&format!(
|
||||
".sidebar-content label {{ font-size: {level}em; }}"
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
fn zoom(&self, factor: f64) {
|
||||
let wv = &*self.web_view;
|
||||
let new_level = (wv.zoom_level() * factor).clamp(0.25, 5.0);
|
||||
wv.set_zoom_level(new_level);
|
||||
self.update_sidebar_zoom(new_level);
|
||||
let settings = gio::Settings::new("net.jeena.FeedTheMonkey");
|
||||
settings.set_double("zoom-level", new_level).ok();
|
||||
}
|
||||
|
||||
fn zoom_reset(&self) {
|
||||
self.web_view.set_zoom_level(1.0);
|
||||
self.update_sidebar_zoom(1.0);
|
||||
let settings = gio::Settings::new("net.jeena.FeedTheMonkey");
|
||||
settings.set_double("zoom-level", 1.0).ok();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue