From 7dbab387e67b810bcd6a3e4803bcd332f62be35a Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Mon, 16 Jan 2023 20:48:46 +1300 Subject: [PATCH] fix DPI work --- src/settings.rs | 18 ++++++++++++++---- src/ui/mod.rs | 6 ++++-- src/ui/settings.rs | 9 +++++++-- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/settings.rs b/src/settings.rs index faefcdc3..bf320354 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -152,8 +152,7 @@ impl Settings { ('pow', ?),\ ('offline', ?),\ ('light_mode', ?),\ - ('set_client_tag', ?),\ - ('override_dpi', ?)", + ('set_client_tag', ?)", )?; stmt.execute(( self.feed_chunk, @@ -167,10 +166,21 @@ impl Settings { self.pow, bool_to_numstr(self.offline), bool_to_numstr(self.light_mode), - bool_to_numstr(self.set_client_tag), - self.override_dpi, + bool_to_numstr(self.set_client_tag) ))?; + // Save override dpi + if let Some(ref dpi) = self.override_dpi { + let mut stmt = db.prepare( + "REPLACE INTO SETTINGS (key, value) VALUES ('override_dpi', ?)", + )?; + stmt.execute((&dpi,))?; + } else { + // Otherwise delete any such setting + let mut stmt = db.prepare("DELETE FROM settings WHERE key='override_dpi'")?; + stmt.execute(())?; + } + // Save private key identity if let Some(ref epk) = self.encrypted_private_key { let mut stmt = db.prepare( diff --git a/src/ui/mod.rs b/src/ui/mod.rs index fbf295dc..ecc1a1fd 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -109,12 +109,14 @@ impl GossipUi { if let Some(dpi) = settings.override_dpi { let ppt: f32 = dpi as f32 / 72.0; cctx.egui_ctx.set_pixels_per_point(ppt); + tracing::debug!("Pixels per point: {}", ppt); } else if let Some(ppt) = cctx.integration_info.native_pixels_per_point { cctx.egui_ctx.set_pixels_per_point(ppt); + tracing::debug!("Pixels per point: {}", ppt); + } else { + tracing::debug!("Pixels per point: {}", cctx.egui_ctx.pixels_per_point()); } - tracing::debug!("Pixels per point: {}", cctx.egui_ctx.pixels_per_point()); - // Set global pixels_per_point_times_100, used for image scaling. GLOBALS.pixels_per_point_times_100.store( (cctx.egui_ctx.pixels_per_point() * 100.0) as u32, diff --git a/src/ui/settings.rs b/src/ui/settings.rs index 0f6ce744..95b8ceab 100644 --- a/src/ui/settings.rs +++ b/src/ui/settings.rs @@ -5,7 +5,7 @@ use eframe::egui; use egui::widgets::{Button, Slider}; use egui::{Align, Context, Layout, ScrollArea, Ui}; -pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Frame, ui: &mut Ui) { +pub(super) fn update(app: &mut GossipUi, ctx: &Context, _frame: &mut eframe::Frame, ui: &mut Ui) { ui.heading("Settings"); ScrollArea::vertical().show(ui, |ui| { @@ -144,9 +144,14 @@ pub(super) fn update(app: &mut GossipUi, _ctx: &Context, _frame: &mut eframe::Fr &mut app.override_dpi, "Override to "); ui.add(Slider::new(&mut app.override_dpi_value, 72..=250).text("DPI")); + if ui.button("Do it now").clicked() { + let ppt: f32 = app.override_dpi_value as f32 / 72.0; + ctx.set_pixels_per_point(ppt); + } - // set real setting if changed + // transfer to app.settings app.settings.override_dpi = if app.override_dpi { + // Set it in settings to be saved on button press Some(app.override_dpi_value) } else { None