1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-27 15:13:12 -04:00

Fix viewports example

This commit is contained in:
Konkitoman
2023-08-05 15:34:23 +03:00
parent 5ca60cad0e
commit 098d94e705
2 changed files with 29 additions and 11 deletions

View File

@@ -972,8 +972,9 @@ mod glow_integration {
let _gl = gl.clone();
let painter = Arc::new(RwLock::new(painter));
let _painter = painter.clone();
let time = integration.beagining.clone();
let time = integration.beagining;
// Sync Rendering
integration.egui_ctx.set_render_sync_callback(
move |viewport_builder, viewport_id, parent_viewport_id, render| {
let window = glutin.read().windows.get(&viewport_id).cloned();
@@ -986,7 +987,7 @@ mod glow_integration {
input.time = Some(time.elapsed().as_secs_f64());
let output =
egui_ctx.run(input, viewport_id, parent_viewport_id, |ctx| {
render(&egui_ctx, viewport_id, parent_viewport_id);
render(ctx, viewport_id, parent_viewport_id);
});
let glutin = &mut *glutin.write();
@@ -1017,16 +1018,15 @@ mod glow_integration {
&clipped_primitives,
&output.textures_delta,
);
unsafe {
crate::profile_scope!("swap_buffers");
let _ = window
crate::profile_scope!("swap_buffers");
let _ =
window
.gl_surface
.as_ref()
.expect("failed to get surface to swap buffers")
.swap_buffers(glutin.current_gl_context.as_ref().expect(
"failed to get current context to swap buffers",
));
}
return;
}
}

View File

@@ -99,6 +99,12 @@ fn main() {
});
}
}
ui.add(
egui::widgets::DragValue::new(&mut value)
.clamp_range(-10..=10)
.speed(0.1),
);
});
});
egui::CollapsingHeader::new("Async Test2").show(ui, |ui| {
@@ -126,10 +132,18 @@ fn main() {
));
if ui.button("Drag").is_pointer_button_down_on() {
ctx.viewport_command(
ctx.get_viewport_id(),
egui::window::ViewportCommand::Drag,
)
if ctx.get_viewport_id() != ctx.get_parent_viewport_id() {
ctx.viewport_command(
ctx.get_viewport_id(),
egui::window::ViewportCommand::Drag,
)
} else {
ctx.memory_mut(|mem| {
mem.set_dragged_id(
egui::Id::new("Test2").with("frame_resize"),
)
});
}
}
});
});
@@ -154,11 +168,15 @@ fn main() {
ctx.get_viewport_id()
));
if ui.button("Drag").is_pointer_button_down_on() {
if ctx.get_viewport_id() != ctx.get_parent_viewport_id() {
ctx.viewport_command(
ctx.get_viewport_id(),
egui::window::ViewportCommand::Drag,
)
} else {
ctx.memory_mut(|mem| {
mem.set_dragged_id(egui::Id::new("Test3").with("frame_resize"))
});
}
});
});