From c9faa78e5bd921aa9c72b6e7d8706fa18d303470 Mon Sep 17 00:00:00 2001 From: Konkitoman Date: Thu, 24 Aug 2023 07:45:42 +0300 Subject: [PATCH] Make the window position and size to not get set when the window is mimimized And now Memory::new_pixels_per_point is not taken because all viewports need to have the same dpi --- crates/egui-winit/src/lib.rs | 26 ++++++++++++++------------ crates/egui/src/context.rs | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/crates/egui-winit/src/lib.rs b/crates/egui-winit/src/lib.rs index 146802982..abaf120b6 100644 --- a/crates/egui-winit/src/lib.rs +++ b/crates/egui-winit/src/lib.rs @@ -176,18 +176,20 @@ impl State { // This solves an issue where egui window positions would be changed when minimizing on Windows. let screen_size_in_pixels = screen_size_in_pixels(window); let screen_size_in_points = screen_size_in_pixels / pixels_per_point; - self.egui_input.screen_rect = - if screen_size_in_points.x > 0.0 && screen_size_in_points.y > 0.0 { - Some(egui::Rect::from_min_max( - window - .outer_position() - .map(|pos| Pos2::new(pos.x as f32, pos.y as f32)) - .unwrap_or(Pos2::ZERO), - screen_size_in_points.to_pos2(), - )) - } else { - None - }; + self.egui_input.screen_rect = if !window.is_minimized().unwrap_or_else(|| { + eprintln!("Cannot determine the Viewport/native window minimized state"); + true + }) { + Some(egui::Rect::from_min_max( + window + .outer_position() + .map(|pos| Pos2::new(pos.x as f32, pos.y as f32)) + .unwrap_or(Pos2::ZERO), + screen_size_in_points.to_pos2(), + )) + } else { + None + }; self.egui_input.take() } diff --git a/crates/egui/src/context.rs b/crates/egui/src/context.rs index 96b834150..3ab607e07 100644 --- a/crates/egui/src/context.rs +++ b/crates/egui/src/context.rs @@ -266,7 +266,7 @@ impl ContextImpl { self.output.entry(self.get_viewport_id()).or_default(); self.repaint.start_frame(self.get_viewport_id()); - if let Some(new_pixels_per_point) = self.memory.new_pixels_per_point.take() { + if let Some(new_pixels_per_point) = self.memory.new_pixels_per_point { new_raw_input.pixels_per_point = Some(new_pixels_per_point); let input = self.input.entry(viewport_id).or_default();