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

Better ViewportBuilder builder patern

This commit is contained in:
Konkitoman
2023-11-08 07:04:33 +02:00
parent b59cb75beb
commit 0d7c87836c
5 changed files with 48 additions and 48 deletions

View File

@@ -87,7 +87,8 @@ pub fn window_builder<E>(
..
} = native_options;
let mut viewport_builder = egui::ViewportBuilder::new(ViewportId::ROOT)
let mut viewport_builder = egui::ViewportBuilder::new(ViewportId::ROOT);
viewport_builder
.with_title(title)
.with_close_button(true) // The default for all other viewports is `false`!
.with_decorations(*decorated)
@@ -108,7 +109,7 @@ pub fn window_builder<E>(
#[cfg(target_os = "macos")]
if *fullsize_content {
viewport_builder = viewport_builder
viewport_builder
.with_title_hidden(true)
.with_titlebar_transparent(true)
.with_fullsize_content_view(true);
@@ -117,19 +118,19 @@ pub fn window_builder<E>(
#[cfg(all(feature = "wayland", target_os = "linux"))]
{
match &native_options.app_id {
Some(app_id) => window_builder = window_builder.with_name(app_id, ""),
None => window_builder = window_builder.with_name(title, ""),
}
Some(app_id) => viewport_builder.with_name(app_id, ""),
None => viewport_builder.with_name(title, ""),
};
}
if let Some(min_size) = *min_window_size {
viewport_builder = viewport_builder.with_min_inner_size(Some(min_size));
viewport_builder.with_min_inner_size(Some(min_size));
}
if let Some(max_size) = *max_window_size {
viewport_builder = viewport_builder.with_max_inner_size(Some(max_size));
viewport_builder.with_max_inner_size(Some(max_size));
}
viewport_builder = viewport_builder.with_drag_and_drop(*drag_and_drop_support);
viewport_builder.with_drag_and_drop(*drag_and_drop_support);
// Always use the default window size / position on iOS. Trying to restore the previous position
// causes the window to be shown too small.
@@ -140,17 +141,17 @@ pub fn window_builder<E>(
window_settings.clamp_size_to_sane_values(largest_monitor_point_size(event_loop));
window_settings.clamp_position_to_monitors(event_loop);
viewport_builder = window_settings.initialize_viewport_builder(viewport_builder);
window_settings.initialize_viewport_builder(&mut viewport_builder);
window_settings.inner_size_points()
} else {
if let Some(pos) = *initial_window_pos {
viewport_builder = viewport_builder.with_position(Some(pos));
viewport_builder.with_position(Some(pos));
}
if let Some(initial_window_size) = *initial_window_size {
let initial_window_size =
initial_window_size.at_most(largest_monitor_point_size(event_loop));
viewport_builder = viewport_builder.with_inner_size(Some(initial_window_size));
viewport_builder.with_inner_size(Some(initial_window_size));
}
*initial_window_size
@@ -164,7 +165,7 @@ pub fn window_builder<E>(
if monitor_size.width > 0.0 && monitor_size.height > 0.0 {
let x = (monitor_size.width - inner_size.x) / 2.0;
let y = (monitor_size.height - inner_size.y) / 2.0;
viewport_builder = viewport_builder.with_position(Some(egui::Pos2::new(x, y)));
viewport_builder.with_position(Some(egui::Pos2::new(x, y)));
}
}
}