mirror of
https://github.com/emilk/egui.git
synced 2026-09-02 14:50:03 -04:00
Update example and now the viewport will always render if can create a native window will be embedded
This commit is contained in:
@@ -1065,11 +1065,7 @@ mod glow_integration {
|
|||||||
let screen_size_in_pixels: [u32; 2] =
|
let screen_size_in_pixels: [u32; 2] =
|
||||||
win.window.as_ref().unwrap().inner_size().into();
|
win.window.as_ref().unwrap().inner_size().into();
|
||||||
|
|
||||||
egui_glow::painter::clear(
|
egui_glow::painter::clear(&gl, screen_size_in_pixels, [0.0, 0.0, 0.0, 0.0]);
|
||||||
&gl,
|
|
||||||
screen_size_in_pixels,
|
|
||||||
app.clear_color(&integration.egui_ctx.style().visuals),
|
|
||||||
);
|
|
||||||
|
|
||||||
integration.egui_ctx.set_current_viewport_id(win.window_id);
|
integration.egui_ctx.set_current_viewport_id(win.window_id);
|
||||||
egui::FullOutput {
|
egui::FullOutput {
|
||||||
|
|||||||
@@ -1987,13 +1987,12 @@ impl Context {
|
|||||||
window_builder: ViewportBuilder,
|
window_builder: ViewportBuilder,
|
||||||
func: impl Fn(&Context, u64, u64) + Send + Sync + 'static,
|
func: impl Fn(&Context, u64, u64) + Send + Sync + 'static,
|
||||||
) {
|
) {
|
||||||
let id = self.write(|ctx| {
|
if self.is_desktop() {
|
||||||
if ctx.is_desktop {
|
self.write(|ctx| {
|
||||||
if let Some(window) = ctx.viewports.get_mut(&window_builder.title) {
|
if let Some(window) = ctx.viewports.get_mut(&window_builder.title) {
|
||||||
window.2 = ctx.current_rendering_viewport;
|
window.2 = ctx.current_rendering_viewport;
|
||||||
window.3 = true;
|
window.3 = true;
|
||||||
window.4 = Arc::new(Box::new(func));
|
window.4 = Arc::new(Box::new(func));
|
||||||
window.1
|
|
||||||
} else {
|
} else {
|
||||||
let id = ctx.viewport_counter + 1;
|
let id = ctx.viewport_counter + 1;
|
||||||
ctx.viewport_counter = id;
|
ctx.viewport_counter = id;
|
||||||
@@ -2007,12 +2006,11 @@ impl Context {
|
|||||||
Arc::new(Box::new(func)),
|
Arc::new(Box::new(func)),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
id
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
0
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
func(self, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use eframe::egui;
|
use eframe::egui::{self, window::ViewportBuilder};
|
||||||
|
|
||||||
fn main() -> Result<(), eframe::Error> {
|
fn main() -> Result<(), eframe::Error> {
|
||||||
env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
|
env_logger::init(); // Log to stderr (if you run with `RUST_LOG=debug`).
|
||||||
@@ -36,6 +36,34 @@ fn main() -> Result<(), eframe::Error> {
|
|||||||
age += 1;
|
age += 1;
|
||||||
}
|
}
|
||||||
ui.label(format!("Hello '{name}', age {age}"));
|
ui.label(format!("Hello '{name}', age {age}"));
|
||||||
|
let mut is_desktop = ctx.is_desktop();
|
||||||
|
ui.checkbox(&mut is_desktop, "Is Desktop");
|
||||||
|
ctx.set_desktop(is_desktop);
|
||||||
|
|
||||||
|
ctx.create_viewport(
|
||||||
|
ViewportBuilder::default()
|
||||||
|
.with_inner_size((50, 30))
|
||||||
|
.with_decorations(false)
|
||||||
|
.with_transparent(true)
|
||||||
|
.with_resizable(false),
|
||||||
|
|ctx, _, _| {
|
||||||
|
let size = egui::Rect::from_min_size(
|
||||||
|
egui::Pos2::new(0.0, 0.0),
|
||||||
|
egui::Vec2::new(50.0, 50.0),
|
||||||
|
);
|
||||||
|
let mut ui = egui::Ui::new(
|
||||||
|
ctx.clone(),
|
||||||
|
egui::LayerId::background(),
|
||||||
|
"Viewport Popup".into(),
|
||||||
|
size,
|
||||||
|
size,
|
||||||
|
);
|
||||||
|
egui::Frame::popup(&ctx.style()).show(&mut ui, |ui| {
|
||||||
|
ui.label("Popup");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
let clone = window1_embedded.clone();
|
let clone = window1_embedded.clone();
|
||||||
let embedded = *window1_embedded.read().unwrap();
|
let embedded = *window1_embedded.read().unwrap();
|
||||||
egui::CollapsingHeader::new("Show Test1").show(ui, |ui| {
|
egui::CollapsingHeader::new("Show Test1").show(ui, |ui| {
|
||||||
|
|||||||
Reference in New Issue
Block a user