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

Fix: First frame of Context::create_viewport_sync was always skiped because we didn't have a window to draw on!

Changes: Now Context::create_viewport_sync returns T, before was Option<T>
This commit is contained in:
Konkitoman
2023-08-31 17:07:39 +03:00
parent 6618a47c20
commit c10a4cd79a
3 changed files with 180 additions and 109 deletions

View File

@@ -396,7 +396,7 @@ impl<'open> Window<'open> {
.with_max_inner_size(Some((max_size.x as u32, max_size.y as u32)));
}
return ctx.create_viewport_sync(window_builder, move |ctx| {
return Some(ctx.create_viewport_sync(window_builder, move |ctx| {
let mut op = is_open;
let open = if show_close_button {
Some(&mut op)
@@ -625,7 +625,7 @@ impl<'open> Window<'open> {
inner: content_inner,
response: full_response,
}
});
}));
}
}
let frame = frame.unwrap_or_else(|| Frame::window(&ctx.style()));

View File

@@ -2318,7 +2318,7 @@ impl Context {
&self,
viewport_builder: ViewportBuilder,
func: impl FnOnce(&Context) -> T,
) -> Option<T> {
) -> T {
if !self.force_embedding() {
let mut viewport_id = ViewportId::MAIN;
let mut parent_viewport_id = ViewportId::MAIN;
@@ -2355,9 +2355,9 @@ impl Context {
);
}
out
out.expect("egui backend is implemented incorrectly! Context::set_render_sync_callback")
} else {
Some(func(self))
func(self)
}
}
}