mirror of
https://github.com/emilk/egui.git
synced 2026-06-28 07:23:13 -04:00
Simplify egui_winit::State (#3678)
By storing a clone of the egui context in it, we can be sure to always use the correct `pixels_per_point`
This commit is contained in:
@@ -255,8 +255,7 @@ impl EpiIntegration {
|
||||
_ => {}
|
||||
}
|
||||
|
||||
egui_winit.update_pixels_per_point(&self.egui_ctx, window);
|
||||
egui_winit.on_window_event(&self.egui_ctx, event)
|
||||
egui_winit.on_window_event(window, event)
|
||||
}
|
||||
|
||||
pub fn pre_update(&mut self) {
|
||||
|
||||
@@ -517,7 +517,6 @@ impl GlowWinitRunning {
|
||||
egui_winit::update_viewport_info(&mut viewport.info, &egui_ctx, window);
|
||||
|
||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
||||
egui_winit.update_pixels_per_point(&egui_ctx, window);
|
||||
let mut raw_input = egui_winit.take_egui_input(window);
|
||||
let viewport_ui_cb = viewport.viewport_ui_cb.clone();
|
||||
|
||||
@@ -600,7 +599,7 @@ impl GlowWinitRunning {
|
||||
let egui_winit = viewport.egui_winit.as_mut().unwrap();
|
||||
|
||||
integration.post_update();
|
||||
egui_winit.handle_platform_output(window, &integration.egui_ctx, platform_output);
|
||||
egui_winit.handle_platform_output(window, platform_output);
|
||||
|
||||
let clipped_primitives = integration.egui_ctx.tessellate(shapes, pixels_per_point);
|
||||
|
||||
@@ -1066,6 +1065,7 @@ impl GlutinWindowContext {
|
||||
|
||||
viewport.egui_winit.get_or_insert_with(|| {
|
||||
egui_winit::State::new(
|
||||
self.egui_ctx.clone(),
|
||||
viewport_id,
|
||||
event_loop,
|
||||
Some(window.scale_factor() as f32),
|
||||
@@ -1318,7 +1318,6 @@ fn render_immediate_viewport(
|
||||
};
|
||||
egui_winit::update_viewport_info(&mut viewport.info, egui_ctx, window);
|
||||
|
||||
egui_winit.update_pixels_per_point(egui_ctx, window);
|
||||
let mut raw_input = egui_winit.take_egui_input(window);
|
||||
raw_input.viewports = glutin
|
||||
.viewports
|
||||
@@ -1414,7 +1413,7 @@ fn render_immediate_viewport(
|
||||
}
|
||||
}
|
||||
|
||||
egui_winit.handle_platform_output(window, egui_ctx, platform_output);
|
||||
egui_winit.handle_platform_output(window, platform_output);
|
||||
|
||||
glutin.handle_viewport_output(egui_ctx, viewport_output);
|
||||
}
|
||||
|
||||
@@ -205,6 +205,7 @@ impl WgpuWinitApp {
|
||||
|
||||
#[allow(unused_mut)] // used for accesskit
|
||||
let mut egui_winit = egui_winit::State::new(
|
||||
egui_ctx.clone(),
|
||||
ViewportId::ROOT,
|
||||
event_loop,
|
||||
Some(window.scale_factor() as f32),
|
||||
@@ -488,10 +489,7 @@ impl WgpuWinitRunning {
|
||||
let mut shared_lock = shared.borrow_mut();
|
||||
|
||||
let SharedState {
|
||||
egui_ctx,
|
||||
viewports,
|
||||
painter,
|
||||
..
|
||||
viewports, painter, ..
|
||||
} = &mut *shared_lock;
|
||||
|
||||
if viewport_id != ViewportId::ROOT {
|
||||
@@ -539,7 +537,6 @@ impl WgpuWinitRunning {
|
||||
}
|
||||
|
||||
let egui_winit = egui_winit.as_mut().unwrap();
|
||||
egui_winit.update_pixels_per_point(egui_ctx, window);
|
||||
let mut raw_input = egui_winit.take_egui_input(window);
|
||||
|
||||
integration.pre_update();
|
||||
@@ -596,7 +593,7 @@ impl WgpuWinitRunning {
|
||||
viewport_output,
|
||||
} = full_output;
|
||||
|
||||
egui_winit.handle_platform_output(window, egui_ctx, platform_output);
|
||||
egui_winit.handle_platform_output(window, platform_output);
|
||||
|
||||
{
|
||||
let clipped_primitives = egui_ctx.tessellate(shapes, pixels_per_point);
|
||||
@@ -799,6 +796,7 @@ impl Viewport {
|
||||
}
|
||||
|
||||
self.egui_winit = Some(egui_winit::State::new(
|
||||
egui_ctx.clone(),
|
||||
viewport_id,
|
||||
event_loop,
|
||||
Some(window.scale_factor() as f32),
|
||||
@@ -880,7 +878,6 @@ fn render_immediate_viewport(
|
||||
};
|
||||
egui_winit::update_viewport_info(&mut viewport.info, egui_ctx, window);
|
||||
|
||||
egui_winit.update_pixels_per_point(egui_ctx, window);
|
||||
let mut input = egui_winit.take_egui_input(window);
|
||||
input.viewports = viewports
|
||||
.iter()
|
||||
@@ -944,7 +941,7 @@ fn render_immediate_viewport(
|
||||
false,
|
||||
);
|
||||
|
||||
egui_winit.handle_platform_output(window, &egui_ctx, platform_output);
|
||||
egui_winit.handle_platform_output(window, platform_output);
|
||||
|
||||
handle_viewport_output(&egui_ctx, viewport_output, viewports, *focused_viewport);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user