1
0
mirror of https://github.com/emilk/egui.git synced 2026-08-30 21:30:03 -04:00

Now in ViewportBuilder, InputState, RawInput: viewport_inner_pos, viewport_outer_pos, viewport_inner_size, viewport_outer_size are stored as inner_pos, outer_pos, inner_size, outer_pos and Now every (i32, i32) is stored as egui::Pos2

Addes some documentation
This commit is contained in:
Konkitoman
2023-09-04 14:23:21 +03:00
parent 4a9e087e92
commit 7c4a85ebda
7 changed files with 149 additions and 114 deletions

View File

@@ -188,7 +188,7 @@ impl State {
None
};
self.egui_input.viewport_inner_pos = if getting_info {
self.egui_input.inner_pos = if getting_info {
window
.inner_position()
.map(|pos| Pos2::new(pos.x as f32, pos.y as f32))
@@ -197,7 +197,7 @@ impl State {
None
};
self.egui_input.viewport_outer_pos = if getting_info {
self.egui_input.outer_pos = if getting_info {
window
.outer_position()
.map(|pos| Pos2::new(pos.x as f32, pos.y as f32))
@@ -206,14 +206,14 @@ impl State {
None
};
self.egui_input.viewport_inner_size = if getting_info {
self.egui_input.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 {
self.egui_input.outer_size = if getting_info {
let size = window.outer_size();
Some(Pos2::new(size.width as f32, size.height as f32))
} else {
@@ -950,7 +950,6 @@ pub fn process_viewport_commands(
focused: Option<ViewportId>,
window: &Arc<RwLock<winit::window::Window>>,
) {
use winit::dpi::PhysicalSize;
use winit::window::ResizeDirection;
let win = window.read();
@@ -965,10 +964,10 @@ pub fn process_viewport_commands(
}
}
}
egui::ViewportCommand::InnerSize(width, height) => {
let width = width.max(1);
let height = height.max(1);
win.set_inner_size(PhysicalSize::new(width, height));
egui::ViewportCommand::InnerSize(size) => {
let width = size.x.max(1.0);
let height = size.y.max(1.0);
win.set_inner_size(LogicalSize::new(width, height));
}
egui::ViewportCommand::Resize(top, bottom, right, left) => {
// TODO posibile return the error to `egui::Context`
@@ -986,17 +985,17 @@ pub fn process_viewport_commands(
ViewportCommand::Title(title) => win.set_title(&title),
ViewportCommand::Transparent(v) => win.set_transparent(v),
ViewportCommand::Visible(v) => win.set_visible(v),
ViewportCommand::OuterPosition(x, y) => {
win.set_outer_position(LogicalPosition::new(x, y));
ViewportCommand::OuterPosition(pos) => {
win.set_outer_position(LogicalPosition::new(pos.x, pos.y));
}
ViewportCommand::MinInnerSize(s) => {
win.set_min_inner_size(s.map(|s| LogicalSize::new(s.0, s.1)));
win.set_min_inner_size(s.map(|s| LogicalSize::new(s.x, s.y)));
}
ViewportCommand::MaxInnerSize(s) => {
win.set_max_inner_size(s.map(|s| LogicalSize::new(s.0, s.1)));
win.set_max_inner_size(s.map(|s| LogicalSize::new(s.x, s.y)));
}
ViewportCommand::ResizeIncrements(s) => {
win.set_resize_increments(s.map(|s| LogicalSize::new(s.0, s.1)));
win.set_resize_increments(s.map(|s| LogicalSize::new(s.x, s.y)));
}
ViewportCommand::Resizable(v) => win.set_resizable(v),
ViewportCommand::EnableButtons {
@@ -1035,7 +1034,9 @@ pub fn process_viewport_commands(
.expect("Invalid ICON data!")
}));
}
ViewportCommand::IMEPosition(x, y) => win.set_ime_position(LogicalPosition::new(x, y)),
ViewportCommand::IMEPosition(pos) => {
win.set_ime_position(LogicalPosition::new(pos.x, pos.y));
}
ViewportCommand::IMEAllowed(v) => win.set_ime_allowed(v),
ViewportCommand::IMEPurpose(o) => win.set_ime_purpose(match o {
1 => winit::window::ImePurpose::Password,
@@ -1057,8 +1058,8 @@ pub fn process_viewport_commands(
}
})),
ViewportCommand::ContentProtected(v) => win.set_content_protected(v),
ViewportCommand::CursorPosition(x, y) => {
if let Err(err) = win.set_cursor_position(LogicalPosition::new(x, y)) {
ViewportCommand::CursorPosition(pos) => {
if let Err(err) = win.set_cursor_position(LogicalPosition::new(pos.x, pos.y)) {
log::error!("{err}");
}
}
@@ -1097,9 +1098,9 @@ pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::
let mut window_builder = winit::window::WindowBuilder::new()
.with_title(builder.title.clone())
.with_transparent(builder.transparent.map_or(false, |e| e))
.with_decorations(builder.decorations.map_or(false, |e| e))
.with_resizable(builder.resizable.map_or(false, |e| e))
.with_visible(builder.visible.map_or(false, |e| e))
.with_decorations(builder.decorations.map_or(true, |e| e))
.with_resizable(builder.resizable.map_or(true, |e| e))
.with_visible(builder.visible.map_or(true, |e| e))
.with_maximized(builder.minimized.map_or(false, |e| e))
.with_maximized(builder.maximized.map_or(false, |e| e))
.with_fullscreen(
@@ -1122,25 +1123,29 @@ pub fn create_winit_window_builder(builder: &ViewportBuilder) -> winit::window::
.unwrap_or(WindowButtons::empty()),
)
.with_active(builder.active.map_or(false, |e| e));
if let Some(Some(inner_size)) = builder.inner_size {
window_builder = window_builder
.with_inner_size(winit::dpi::PhysicalSize::new(inner_size.0, inner_size.1));
.with_inner_size(winit::dpi::LogicalSize::new(inner_size.x, inner_size.y));
}
if let Some(Some(min_inner_size)) = builder.min_inner_size {
window_builder = window_builder.with_min_inner_size(winit::dpi::PhysicalSize::new(
min_inner_size.0,
min_inner_size.1,
window_builder = window_builder.with_min_inner_size(winit::dpi::LogicalSize::new(
min_inner_size.x,
min_inner_size.y,
));
}
if let Some(Some(max_inner_size)) = builder.max_inner_size {
window_builder = window_builder.with_max_inner_size(winit::dpi::PhysicalSize::new(
max_inner_size.0,
max_inner_size.1,
window_builder = window_builder.with_max_inner_size(winit::dpi::LogicalSize::new(
max_inner_size.x,
max_inner_size.y,
));
}
if let Some(Some(position)) = builder.position {
window_builder =
window_builder.with_position(winit::dpi::PhysicalPosition::new(position.0, position.1));
window_builder.with_position(winit::dpi::LogicalPosition::new(position.x, position.y));
}
if let Some(Some(icon)) = builder.icon.clone() {
@@ -1181,7 +1186,7 @@ pub fn changes_between_builders(
if Some(position) != last.position {
last.position = Some(position);
if let Some(position) = position {
commands.push(ViewportCommand::OuterPosition(position.0, position.1));
commands.push(ViewportCommand::OuterPosition(position));
}
}
}
@@ -1190,7 +1195,7 @@ pub fn changes_between_builders(
if Some(inner_size) != last.inner_size {
last.inner_size = Some(inner_size);
if let Some(inner_size) = inner_size {
commands.push(ViewportCommand::InnerSize(inner_size.0, inner_size.1));
commands.push(ViewportCommand::InnerSize(inner_size));
}
}
}

View File

@@ -57,15 +57,12 @@ impl WindowSettings {
self.outer_position_pixels
};
if let Some(pos) = pos_px {
window = window.with_position(Some((pos.x as i32, pos.y as i32)));
window = window.with_position(Some(pos));
}
if let Some(inner_size_points) = self.inner_size_points {
window
.with_inner_size(Some((
inner_size_points.x as u32,
inner_size_points.y as u32,
)))
.with_inner_size(Some(inner_size_points.to_pos2()))
.with_fullscreen(self.fullscreen)
} else {
window