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:
@@ -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)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user