fix DPI work

This commit is contained in:
Mike Dilger 2023-01-16 20:48:46 +13:00
parent cdf402c6b5
commit 7dbab387e6
3 changed files with 25 additions and 8 deletions

View File

@ -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(

View File

@ -109,11 +109,13 @@ 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());
}
// Set global pixels_per_point_times_100, used for image scaling.
GLOBALS.pixels_per_point_times_100.store(

View File

@ -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