diff --git a/crates/eframe/src/native/epi_integration.rs b/crates/eframe/src/native/epi_integration.rs index 47dae7e93..98b928483 100644 --- a/crates/eframe/src/native/epi_integration.rs +++ b/crates/eframe/src/native/epi_integration.rs @@ -481,7 +481,7 @@ impl EpiIntegration { window: &winit::window::Window, egui_winit: &mut egui_winit::State, viewport_ui_cb: &Option>>, - pair: ViewportIdPair, + id_pair: ViewportIdPair, ) -> egui::FullOutput { let frame_start = std::time::Instant::now(); @@ -493,7 +493,7 @@ impl EpiIntegration { raw_input.time = Some(self.beginning.elapsed().as_secs_f64()); // Run user code: - let full_output = self.egui_ctx.run(raw_input, pair, |egui_ctx| { + let full_output = self.egui_ctx.run(raw_input, id_pair, |egui_ctx| { crate::profile_scope!("App::update"); if let Some(viewport_ui_cb) = viewport_ui_cb { // Child viewport diff --git a/crates/eframe/src/native/run.rs b/crates/eframe/src/native/run.rs index 1f0091ce9..f1322f0ad 100644 --- a/crates/eframe/src/native/run.rs +++ b/crates/eframe/src/native/run.rs @@ -502,7 +502,7 @@ mod glow_integration { struct Viewport { gl_surface: Option>, window: Option>>, - pair: ViewportIdPair, + id_pair: ViewportIdPair, /// The user-callback that shows the ui. viewport_ui_cb: Option>>, @@ -673,7 +673,7 @@ mod glow_integration { window: window.map(|w| Rc::new(RefCell::new(w))), egui_winit: None, viewport_ui_cb: None, - pair: ViewportIdPair::MAIN, + id_pair: ViewportIdPair::MAIN, })), ); @@ -729,7 +729,7 @@ mod glow_integration { win: &Rc>, event_loop: &EventLoopWindowTarget, ) -> Result<()> { - let builder = &self.builders[&win.borrow().pair.this]; + let builder = &self.builders[&win.borrow().id_pair.this]; let mut win = win.borrow_mut(); // make sure we have a window or create one. let window = win.window.take().unwrap_or_else(|| { @@ -797,8 +797,8 @@ mod glow_integration { win.gl_surface = Some(gl_surface); self.current_gl_context = Some(current_gl_context); - self.viewport_maps.insert(window.id(), win.pair.this); - self.window_maps.insert(win.pair.this, window.id()); + self.viewport_maps.insert(window.id(), win.id_pair.this); + self.window_maps.insert(win.id_pair.this, window.id()); } win.window = Some(window); Ok(()) @@ -1082,14 +1082,14 @@ mod glow_integration { let beginning = integration.beginning; integration.egui_ctx.set_render_sync_callback( - move |egui_ctx, viewport_builder, pair, viewport_ui_cb| { + move |egui_ctx, viewport_builder, id_pair, viewport_ui_cb| { if let (Some(glutin), Some(gl), Some(painter)) = (glutin.upgrade(), gl.upgrade(), painter.upgrade()) { Self::render_sync_viewport( egui_ctx, viewport_builder, - pair, + id_pair, viewport_ui_cb, &glutin, &gl, @@ -1119,7 +1119,7 @@ mod glow_integration { fn render_sync_viewport( egui_ctx: &egui::Context, mut viewport_builder: ViewportBuilder, - pair: ViewportIdPair, + id_pair: ViewportIdPair, viewport_ui_cb: Box, glutin: &RefCell, gl: &glow::Context, @@ -1128,7 +1128,7 @@ mod glow_integration { ) { crate::profile_function!(); - let has_window = glutin.borrow().viewports.get(&pair.this).is_some(); + let has_window = glutin.borrow().viewports.get(&id_pair.this).is_some(); // This will create a new native window if is needed if !has_window { @@ -1136,11 +1136,12 @@ mod glow_integration { // Inherit parent icon if none { - if viewport_builder.icon.is_none() && glutin.builders.get(&pair.this).is_none() + if viewport_builder.icon.is_none() + && glutin.builders.get(&id_pair.this).is_none() { viewport_builder.icon = glutin .builders - .get(&pair.parent) + .get(&id_pair.parent) .and_then(|b| b.icon.clone()); } } @@ -1148,18 +1149,21 @@ mod glow_integration { { glutin .viewports - .entry(pair.this) + .entry(id_pair.this) .or_insert(Rc::new(RefCell::new(Viewport { gl_surface: None, window: None, - pair, + id_pair, viewport_ui_cb: None, egui_winit: None, }))); - glutin.builders.entry(pair.this).or_insert(viewport_builder); + glutin + .builders + .entry(id_pair.this) + .or_insert(viewport_builder); } - let win = glutin.viewports[&pair.this].clone(); + let win = glutin.viewports[&id_pair.this].clone(); #[allow(unsafe_code)] let event_loop = unsafe { @@ -1174,7 +1178,7 @@ mod glow_integration { // Rendering the sync viewport - let window = glutin.borrow().viewports.get(&pair.this).cloned(); + let window = glutin.borrow().viewports.get(&id_pair.this).cloned(); let Some(window) = window else { return }; let window = &mut *window.borrow_mut(); @@ -1187,13 +1191,13 @@ mod glow_integration { let win = win.borrow(); let mut input = winit_state.take_egui_input(&win); input.time = Some(beginning.elapsed().as_secs_f64()); - let output = egui_ctx.run(input, pair, |ctx| { + let output = egui_ctx.run(input, id_pair, |ctx| { viewport_ui_cb(ctx); }); let screen_size_in_pixels: [u32; 2] = win.inner_size().into(); - let clipped_primitives = egui_ctx.tessellate(output.shapes, pair.this); + let clipped_primitives = egui_ctx.tessellate(output.shapes, id_pair.this); let mut glutin = glutin.borrow_mut(); let mut painter = painter.borrow_mut(); @@ -1215,13 +1219,13 @@ mod glow_integration { .unwrap() .is_current(glutin.current_gl_context.as_ref().unwrap()) { - let builder = &&glutin.builders[&window.pair.this]; + let builder = &&glutin.builders[&window.id_pair.this]; log::error!("egui::create_viewport_sync with title: `{}` is not created in main thread, try to use wgpu!", builder.title); } egui_glow::painter::clear(gl, screen_size_in_pixels, [0.0, 0.0, 0.0, 0.0]); - let pixels_per_point = egui_ctx.input_for(pair.this, |i| i.pixels_per_point()); + let pixels_per_point = egui_ctx.input_for(id_pair.this, |i| i.pixels_per_point()); painter.paint_and_update_textures( screen_size_in_pixels, pixels_per_point, @@ -1242,7 +1246,12 @@ mod glow_integration { { log::error!("swap_buffers failed: {err}"); } - winit_state.handle_platform_output(&win, pair.this, egui_ctx, output.platform_output); + winit_state.handle_platform_output( + &win, + id_pair.this, + egui_ctx, + output.platform_output, + ); } fn process_viewport_builders( @@ -1254,7 +1263,7 @@ mod glow_integration { viewports.retain_mut( |ViewportOutput { builder, - pair: ViewportIdPair { this: id, .. }, + id_pair: ViewportIdPair { this: id, .. }, viewport_ui_cb, }| { let mut glutin = glutin_ctx.borrow_mut(); @@ -1267,7 +1276,7 @@ mod glow_integration { viewport.window = None; viewport.gl_surface = None; viewport.viewport_ui_cb = viewport_ui_cb.clone(); - viewport.pair.parent = *id; + viewport.id_pair.parent = *id; } if let Some(w) = viewport.window.clone() { process_viewport_commands(commands, *id, None, &w.borrow()); @@ -1282,7 +1291,7 @@ mod glow_integration { for ViewportOutput { mut builder, - pair, + id_pair, viewport_ui_cb, } in viewports { @@ -1291,24 +1300,24 @@ mod glow_integration { builder.icon = glutin_ctx .borrow() .builders - .get(&pair.parent) + .get(&id_pair.parent) .and_then(|b| b.icon.clone()); } { let mut glutin = glutin_ctx.borrow_mut(); glutin.viewports.insert( - pair.this, + id_pair.this, Rc::new(RefCell::new(Viewport { gl_surface: None, window: None, egui_winit: None, viewport_ui_cb, - pair, + id_pair, })), ); - glutin.builders.insert(pair.this, builder); + glutin.builders.insert(id_pair.this, builder); } - active_viewports_ids.push(pair.this); + active_viewports_ids.push(id_pair.this); } let mut glutin = glutin_ctx.borrow_mut(); @@ -1436,7 +1445,7 @@ mod glow_integration { if viewport.borrow().viewport_ui_cb.is_none() && viewport_id != ViewportId::MAIN { if let Some(parent_viewport) = - glutin.viewports.get(&viewport.borrow().pair.parent) + glutin.viewports.get(&viewport.borrow().id_pair.parent) { if let Some(window) = parent_viewport.borrow().window.as_ref() { return EventResult::RepaintNext(window.borrow().id()); @@ -1484,7 +1493,7 @@ mod glow_integration { &window, egui_winit, &viewport.viewport_ui_cb.clone(), - viewport.pair, + viewport.id_pair, ); integration.borrow_mut().handle_platform_output( @@ -1795,7 +1804,7 @@ mod glow_integration { running.app.borrow_mut().as_mut(), event, viewport.egui_winit.as_mut().unwrap(), - viewport.pair.this, + viewport.id_pair.this, ); } } @@ -2183,7 +2192,7 @@ mod wgpu_integration { let beginning = integration.beginning; integration.egui_ctx.set_render_sync_callback( - move |egui_ctx, viewport_builder, pair, viewport_ui_cb| { + move |egui_ctx, viewport_builder, id_pair, viewport_ui_cb| { if let ( Some(viewports), Some(builders), @@ -2198,7 +2207,7 @@ mod wgpu_integration { Self::render_sync_viewport( egui_ctx, viewport_builder, - pair, + id_pair, viewport_ui_cb, &viewports, &builders, @@ -2230,7 +2239,7 @@ mod wgpu_integration { fn render_sync_viewport( egui_ctx: &egui::Context, mut viewport_builder: ViewportBuilder, - pair: ViewportIdPair, + id_pair: ViewportIdPair, viewport_ui_cb: Box, viewports: &RefCell, builders: &RefCell>, @@ -2241,27 +2250,27 @@ mod wgpu_integration { crate::profile_function!(); // Creating a new native window if is needed - if viewports.borrow().get(&pair.this).is_none() { + if viewports.borrow().get(&id_pair.this).is_none() { let mut builders = builders.borrow_mut(); { - if viewport_builder.icon.is_none() && builders.get(&pair.this).is_none() { + if viewport_builder.icon.is_none() && builders.get(&id_pair.this).is_none() { viewport_builder.icon = - builders.get(&pair.parent).and_then(|b| b.icon.clone()); + builders.get(&id_pair.parent).and_then(|b| b.icon.clone()); } } let mut viewports = viewports.borrow_mut(); let Viewport { window, state, .. } = - viewports.entry(pair.this).or_insert(Viewport { + viewports.entry(id_pair.this).or_insert(Viewport { window: None, state: Rc::new(RefCell::new(None)), viewport_ui_cb: None, - parent_id: pair.parent, + parent_id: id_pair.parent, }); builders - .entry(pair.this) + .entry(id_pair.this) .or_insert(viewport_builder.clone()); #[allow(unsafe_code)] @@ -2272,7 +2281,7 @@ mod wgpu_integration { }; Self::init_window( - pair.this, + id_pair.this, &viewport_builder, &mut viewport_maps.borrow_mut(), &mut painter.borrow_mut(), @@ -2283,7 +2292,7 @@ mod wgpu_integration { } // Render sync viewport: - let viewport = viewports.borrow().get(&pair.this).cloned(); + let viewport = viewports.borrow().get(&id_pair.this).cloned(); let Some(viewport) = viewport else { return }; let Some(winit_state) = &mut *viewport.state.borrow_mut() else { return; @@ -2294,23 +2303,23 @@ mod wgpu_integration { let win = window.borrow(); let mut input = winit_state.take_egui_input(&win); input.time = Some(beginning.elapsed().as_secs_f64()); - let output = egui_ctx.run(input, pair, |ctx| { + let output = egui_ctx.run(input, id_pair, |ctx| { viewport_ui_cb(ctx); }); let mut painter = painter.borrow_mut(); - if let Err(err) = pollster::block_on(painter.set_window(pair.this, Some(&win))) { + if let Err(err) = pollster::block_on(painter.set_window(id_pair.this, Some(&win))) { log::error!( "when rendering viewport_id: {}, set_window Error {err}", - pair.this + id_pair.this ); } - let pixels_per_point = egui_ctx.input_for(pair.this, |i| i.pixels_per_point()); - let clipped_primitives = egui_ctx.tessellate(output.shapes, pair.this); + let pixels_per_point = egui_ctx.input_for(id_pair.this, |i| i.pixels_per_point()); + let clipped_primitives = egui_ctx.tessellate(output.shapes, id_pair.this); painter.paint_and_update_textures( - pair.this, + id_pair.this, pixels_per_point, [0.0, 0.0, 0.0, 0.0], &clipped_primitives, @@ -2318,7 +2327,12 @@ mod wgpu_integration { false, ); - winit_state.handle_platform_output(&win, pair.this, egui_ctx, output.platform_output); + winit_state.handle_platform_output( + &win, + id_pair.this, + egui_ctx, + output.platform_output, + ); } } @@ -2500,7 +2514,7 @@ mod wgpu_integration { out_viewports.retain_mut( |ViewportOutput { - pair: ViewportIdPair { this: id, parent }, + id_pair: ViewportIdPair { this: id, parent }, viewport_ui_cb, .. }| { @@ -2517,7 +2531,7 @@ mod wgpu_integration { for ViewportOutput { mut builder, - pair: + id_pair: ViewportIdPair { this: id, parent: parent_id, diff --git a/crates/egui/src/context.rs b/crates/egui/src/context.rs index 4939e6c17..973eb4fd7 100644 --- a/crates/egui/src/context.rs +++ b/crates/egui/src/context.rs @@ -194,9 +194,9 @@ struct ContextImpl { } impl ContextImpl { - fn begin_frame_mut(&mut self, mut new_raw_input: RawInput, pair: ViewportIdPair) { - if let Some(pair) = self.viewport_stack.last().copied() { - let previous_viewport_id = pair.this; + fn begin_frame_mut(&mut self, mut new_raw_input: RawInput, id_pair: ViewportIdPair) { + if let Some(id_pair) = self.viewport_stack.last().copied() { + let previous_viewport_id = id_pair.this; // Pause the active viewport self.memory.pause_frame(previous_viewport_id); @@ -210,8 +210,8 @@ impl ContextImpl { ); } - let viewport_id = pair.this; - self.viewport_stack.push(pair); + let viewport_id = id_pair.this; + self.viewport_stack.push(id_pair); self.output.entry(self.viewport_id()).or_default(); self.repaint.start_frame(self.viewport_id()); @@ -485,12 +485,12 @@ impl Context { pub fn run( &self, new_input: RawInput, - pair: ViewportIdPair, + id_pair: ViewportIdPair, run_ui: impl FnOnce(&Context), ) -> FullOutput { crate::profile_function!(); - self.begin_frame(new_input, pair); + self.begin_frame(new_input, id_pair); run_ui(self); self.end_frame() } @@ -512,10 +512,10 @@ impl Context { /// let full_output = ctx.end_frame(); /// // handle full_output /// ``` - pub fn begin_frame(&self, new_input: RawInput, pair: ViewportIdPair) { + pub fn begin_frame(&self, new_input: RawInput, id_pair: ViewportIdPair) { crate::profile_function!(); - self.write(|ctx| ctx.begin_frame_mut(new_input, pair)); + self.write(|ctx| ctx.begin_frame_mut(new_input, id_pair)); } /// Create a new Context and specify if is desktop @@ -1340,7 +1340,7 @@ impl Context { if pixels_per_point != self.pixels_per_point() { self.write(|ctx| { for viewport in ctx.viewports.values() { - ctx.repaint.request_repaint_settle(viewport.pair.this); + ctx.repaint.request_repaint_settle(viewport.id_pair.this); } ctx.repaint.request_repaint_settle(ViewportId::MAIN); ctx.memory.override_pixels_per_point = Some(pixels_per_point); @@ -1491,7 +1491,7 @@ impl Context { ctx.viewport_id(), std::mem::take(&mut ctx.layer_rects_this_frame), ); - ctx.viewports.values().map(|vp| vp.pair.this).collect() + ctx.viewports.values().map(|vp| vp.id_pair.this).collect() }); viewports.push(ViewportId::MAIN); @@ -1559,7 +1559,7 @@ impl Context { let available_viewports = self.read(|ctx| { let mut available_viewports = vec![ViewportId::MAIN]; for vp in ctx.viewports.values() { - available_viewports.push(vp.pair.this); + available_viewports.push(vp.id_pair.this); } available_viewports }); @@ -1572,23 +1572,23 @@ impl Context { |_, Viewport { builder, - pair, + id_pair, used, viewport_ui_cb, }| { let retain = *used; - if viewport_id == pair.parent { + if viewport_id == id_pair.parent { *used = false; } viewports.push(ViewportOutput { builder: builder.clone(), - pair: *pair, + id_pair: *id_pair, viewport_ui_cb: viewport_ui_cb.clone(), }); - (retain || viewport_id != pair.parent) - && available_viewports.contains(&pair.parent) + (retain || viewport_id != id_pair.parent) + && available_viewports.contains(&id_pair.parent) }, ); }); @@ -2525,7 +2525,7 @@ impl Context { /// This will return the `ViewportIdPair` of the specified id pub fn viewport_id_pair(&self, id: impl Into) -> Option { - self.read(|ctx| ctx.viewports.get(&id.into()).map(|v| v.pair)) + self.read(|ctx| ctx.viewports.get(&id.into()).map(|v| v.id_pair)) } /// For integrations: Is used to render a sync viewport. @@ -2598,7 +2598,7 @@ impl Context { let viewport_id = ctx.viewport_id(); if let Some(window) = ctx.viewports.get_mut(&viewport_builder.id) { window.builder = viewport_builder; - window.pair.parent = viewport_id; + window.id_pair.parent = viewport_id; window.used = true; window.viewport_ui_cb = Some(Arc::new(Box::new(viewport_ui_cb))); } else { @@ -2608,7 +2608,7 @@ impl Context { viewport_builder.id, Viewport { builder: viewport_builder, - pair: ViewportIdPair { + id_pair: ViewportIdPair { this: id, parent: viewport_id, }, @@ -2663,10 +2663,10 @@ impl Context { if let Some(window) = ctx.viewports.get_mut(&viewport_builder.id) { // Existing window.builder = viewport_builder.clone(); - window.pair.parent = parent; + window.id_pair.parent = parent; window.used = true; window.viewport_ui_cb = None; - window.pair + window.id_pair } else { // New ctx.viewport_id_generator += 1; @@ -2676,7 +2676,7 @@ impl Context { viewport_builder.id, Viewport { builder: viewport_builder.clone(), - pair: id_pair, + id_pair, used: true, viewport_ui_cb: None, }, diff --git a/crates/egui/src/viewport.rs b/crates/egui/src/viewport.rs index 7b2a72f12..14cf8b564 100644 --- a/crates/egui/src/viewport.rs +++ b/crates/egui/src/viewport.rs @@ -425,7 +425,7 @@ pub(crate) struct Viewport { pub(crate) builder: ViewportBuilder, /// Id of us and our parent. - pub(crate) pair: ViewportIdPair, + pub(crate) id_pair: ViewportIdPair, pub(crate) used: bool, @@ -440,7 +440,7 @@ pub struct ViewportOutput { pub builder: ViewportBuilder, /// Id of us and our parent. - pub pair: ViewportIdPair, + pub id_pair: ViewportIdPair, /// The user-code that shows the GUI, used for "async" viewports. ///