From 70a5388893023e8907fbb44fead497e09b2fbbb0 Mon Sep 17 00:00:00 2001 From: sam edelsten <samedelsten1@gmail.com> Date: Fri, 10 Nov 2023 09:10:39 +0000 Subject: [PATCH] possible scale fix for HiDPI screens i need a higher pixel count to be sure --- src/render.rs | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/render.rs b/src/render.rs index 33a2381..56300fd 100644 --- a/src/render.rs +++ b/src/render.rs @@ -463,13 +463,33 @@ pub(crate) fn hide_inactive_or_readonly_cursor( pub(crate) fn set_initial_scale( window_q: Query<&Window, With<PrimaryWindow>>, - mut metrics_q: Query<&mut CosmicMetrics, Added<CosmicMetrics>>, + mut cosmic_query: Query< + ( + Option<&mut CosmicEditor>, + &mut CosmicMetrics, + Option<&mut XOffset>, + ), + Added<CosmicMetrics>, + >, + mut font_system: ResMut<CosmicFontSystem>, ) { let scale = window_q.single().scale_factor() as f32; - for mut metrics in metrics_q.iter_mut() { - if metrics.scale_factor == DEFAULT_SCALE_PLACEHOLDER { - metrics.scale_factor = scale; + for (editor, mut metrics, x_offset) in &mut cosmic_query.iter_mut() { + if metrics.scale_factor != DEFAULT_SCALE_PLACEHOLDER { + continue; + } + + let font_system = &mut font_system.0; + metrics.scale_factor = scale; + let metrics = Metrics::new(metrics.font_size, metrics.line_height).scale(scale); + + if let Some(mut editor) = editor { + editor.0.buffer_mut().set_metrics(font_system, metrics); + editor.0.buffer_mut().set_redraw(true); + } + if let Some(mut x_offset) = x_offset { + *x_offset = XOffset(None); } } } -- GitLab