From 14d251e63a47c57d1b36f8720ea295f692187f93 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Mon, 11 Apr 2022 11:55:19 +0200 Subject: [PATCH] winit backend: preserve the value of the scale_factor set programmatically --- internal/backends/gl/glwindow.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/internal/backends/gl/glwindow.rs b/internal/backends/gl/glwindow.rs index ce1e6cb5b..f6ddd6395 100644 --- a/internal/backends/gl/glwindow.rs +++ b/internal/backends/gl/glwindow.rs @@ -408,10 +408,17 @@ impl PlatformWindow for GLWindow { .with_title(window_title) .with_resizable(is_resizable); - let scale_factor_override = std::env::var("SLINT_SCALE_FACTOR") - .ok() - .and_then(|x| x.parse::().ok()) - .filter(|f| *f > 0.); + let scale_factor_override = runtime_window.scale_factor(); + // If the scale factor was already set programmatically, use that + // else, use the SLINT_SCALE_FACTOR if set, otherwise use the one from winit + let scale_factor_override = if scale_factor_override > 1. { + Some(scale_factor_override as f64) + } else { + std::env::var("SLINT_SCALE_FACTOR") + .ok() + .and_then(|x| x.parse::().ok()) + .filter(|f| *f > 0.) + }; let window_builder = if std::env::var("SLINT_FULLSCREEN").is_ok() { window_builder.with_fullscreen(Some(winit::window::Fullscreen::Borderless(None)))