1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-02 06:40:06 -04:00

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
This commit is contained in:
Konkitoman
2023-08-24 07:45:42 +03:00
parent 3b41253442
commit c9faa78e5b
2 changed files with 15 additions and 13 deletions

View File

@@ -176,18 +176,20 @@ impl State {
// This solves an issue where egui window positions would be changed when minimizing on Windows. // 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_pixels = screen_size_in_pixels(window);
let screen_size_in_points = screen_size_in_pixels / pixels_per_point; let screen_size_in_points = screen_size_in_pixels / pixels_per_point;
self.egui_input.screen_rect = self.egui_input.screen_rect = if !window.is_minimized().unwrap_or_else(|| {
if screen_size_in_points.x > 0.0 && screen_size_in_points.y > 0.0 { eprintln!("Cannot determine the Viewport/native window minimized state");
Some(egui::Rect::from_min_max( true
window }) {
.outer_position() Some(egui::Rect::from_min_max(
.map(|pos| Pos2::new(pos.x as f32, pos.y as f32)) window
.unwrap_or(Pos2::ZERO), .outer_position()
screen_size_in_points.to_pos2(), .map(|pos| Pos2::new(pos.x as f32, pos.y as f32))
)) .unwrap_or(Pos2::ZERO),
} else { screen_size_in_points.to_pos2(),
None ))
}; } else {
None
};
self.egui_input.take() self.egui_input.take()
} }

View File

@@ -266,7 +266,7 @@ impl ContextImpl {
self.output.entry(self.get_viewport_id()).or_default(); self.output.entry(self.get_viewport_id()).or_default();
self.repaint.start_frame(self.get_viewport_id()); 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); new_raw_input.pixels_per_point = Some(new_pixels_per_point);
let input = self.input.entry(viewport_id).or_default(); let input = self.input.entry(viewport_id).or_default();