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

Now viewport pos and size are stored in InputState::{viewport_inner_pos, viewport_outer_pos, viewport_inner_size, viewport_outer_size}

This fixes a lot of problems
This commit is contained in:
Konkitoman
2023-08-24 09:14:48 +03:00
parent 9c73c2f4b1
commit 6c91562c7b
7 changed files with 289 additions and 121 deletions

View File

@@ -16,7 +16,7 @@ pub use accesskit_winit;
pub use egui;
#[cfg(feature = "accesskit")]
use egui::accesskit;
use egui::{mutex::RwLock, ViewportBuilder, ViewportCommand, ViewportId};
use egui::{mutex::RwLock, Pos2, ViewportBuilder, ViewportCommand, ViewportId};
pub use winit;
pub mod clipboard;
@@ -183,10 +183,39 @@ impl State {
});
self.egui_input.screen_rect = if getting_info {
Some(egui::Rect::from_min_size(
egui::Pos2::ZERO,
screen_size_in_points,
))
Some(egui::Rect::from_min_size(Pos2::ZERO, screen_size_in_points))
} else {
None
};
self.egui_input.viewport_inner_pos = if getting_info {
window
.inner_position()
.map(|pos| Pos2::new(pos.x as f32, pos.y as f32))
.ok()
} else {
None
};
self.egui_input.viewport_outer_pos = if getting_info {
window
.outer_position()
.map(|pos| Pos2::new(pos.x as f32, pos.y as f32))
.ok()
} else {
None
};
self.egui_input.viewport_inner_size = if getting_info {
let size = window.inner_size();
Some(Pos2::new(size.width as f32, size.height as f32))
} else {
None
};
self.egui_input.viewport_outer_size = if getting_info {
let size = window.outer_size();
Some(Pos2::new(size.width as f32, size.height as f32))
} else {
None
};