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