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

Rename id_pair to ids everywhere

This commit is contained in:
Emil Ernerfeldt
2023-11-14 06:18:04 +01:00
parent 0c828446a6
commit 66662e4414
6 changed files with 92 additions and 99 deletions

View File

@@ -511,7 +511,7 @@ mod glow_integration {
let viewport = &glutin.viewports[&viewport_id]; let viewport = &glutin.viewports[&viewport_id];
let is_immediate = viewport.viewport_ui_cb.is_none(); let is_immediate = viewport.viewport_ui_cb.is_none();
if is_immediate && viewport_id != ViewportId::ROOT { if is_immediate && viewport_id != ViewportId::ROOT {
if let Some(parent_viewport) = glutin.viewports.get(&viewport.id_pair.parent) { if let Some(parent_viewport) = glutin.viewports.get(&viewport.ids.parent) {
if let Some(window) = parent_viewport.window.as_ref() { if let Some(window) = parent_viewport.window.as_ref() {
// This will only happen if this is an immediate viewport. // This will only happen if this is an immediate viewport.
// That means that the viewport cannot be rendered by itself and needs his parent to be rendered. // That means that the viewport cannot be rendered by itself and needs his parent to be rendered.
@@ -528,7 +528,7 @@ mod glow_integration {
let window = viewport.window.as_ref().unwrap(); let window = viewport.window.as_ref().unwrap();
let egui_winit = viewport.egui_winit.as_mut().unwrap(); let egui_winit = viewport.egui_winit.as_mut().unwrap();
let raw_input = egui_winit.take_egui_input(window, viewport.id_pair); let raw_input = egui_winit.take_egui_input(window, viewport.ids);
self.integration.pre_update(window); self.integration.pre_update(window);
@@ -709,7 +709,7 @@ mod glow_integration {
struct Viewport { struct Viewport {
gl_surface: Option<glutin::surface::Surface<glutin::surface::WindowSurface>>, gl_surface: Option<glutin::surface::Surface<glutin::surface::WindowSurface>>,
window: Option<Rc<Window>>, window: Option<Rc<Window>>,
id_pair: ViewportIdPair, ids: ViewportIdPair,
/// The user-callback that shows the ui. /// The user-callback that shows the ui.
/// None for immediate viewports. /// None for immediate viewports.
@@ -719,11 +719,11 @@ mod glow_integration {
} }
impl Viewport { impl Viewport {
pub fn new(id_pair: ViewportIdPair) -> Self { pub fn new(ids: ViewportIdPair) -> Self {
Self { Self {
gl_surface: None, gl_surface: None,
window: None, window: None,
id_pair, ids,
viewport_ui_cb: None, viewport_ui_cb: None,
egui_winit: None, egui_winit: None,
} }
@@ -887,7 +887,7 @@ mod glow_integration {
window: window.map(Rc::new), window: window.map(Rc::new),
egui_winit: None, egui_winit: None,
viewport_ui_cb: None, viewport_ui_cb: None,
id_pair: ViewportIdPair::ROOT, ids: ViewportIdPair::ROOT,
}, },
); );
@@ -953,7 +953,7 @@ mod glow_integration {
.get_mut(&viewport_id) .get_mut(&viewport_id)
.expect("viewport doesn't exist"); .expect("viewport doesn't exist");
let builder = &self.builders[&viewport.id_pair.this]; let builder = &self.builders[&viewport.ids.this];
// make sure we have a window or create one. // make sure we have a window or create one.
let window = viewport.window.take().unwrap_or_else(|| { let window = viewport.window.take().unwrap_or_else(|| {
log::debug!("window doesn't exist yet. creating one now with finalize_window"); log::debug!("window doesn't exist yet. creating one now with finalize_window");
@@ -1015,9 +1015,8 @@ mod glow_integration {
viewport.gl_surface = Some(gl_surface); viewport.gl_surface = Some(gl_surface);
self.current_gl_context = Some(current_gl_context); self.current_gl_context = Some(current_gl_context);
self.viewport_maps self.viewport_maps.insert(window.id(), viewport.ids.this);
.insert(window.id(), viewport.id_pair.this); self.window_maps.insert(viewport.ids.this, window.id());
self.window_maps.insert(viewport.id_pair.this, window.id());
} }
viewport.window = Some(window); viewport.window = Some(window);
Ok(()) Ok(())
@@ -1100,16 +1099,13 @@ mod glow_integration {
viewports.retain_mut( viewports.retain_mut(
|ViewportOutput { |ViewportOutput {
builder: new_builder, builder: new_builder,
id_pair, ids,
viewport_ui_cb, viewport_ui_cb,
}| { }| {
let builder = self let builder = self.builders.entry(ids.this).or_insert(new_builder.clone());
.builders
.entry(id_pair.this)
.or_insert(new_builder.clone());
let (commands, recreate) = builder.patch(new_builder); let (commands, recreate) = builder.patch(new_builder);
if let Some(viewport) = self.viewports.get_mut(&id_pair.this) { if let Some(viewport) = self.viewports.get_mut(&ids.this) {
viewport.id_pair.parent = id_pair.parent; viewport.ids.parent = ids.parent;
viewport.viewport_ui_cb = viewport_ui_cb.clone(); // always update the latest callback viewport.viewport_ui_cb = viewport_ui_cb.clone(); // always update the latest callback
if recreate { if recreate {
@@ -1119,7 +1115,7 @@ mod glow_integration {
let is_viewport_focused = false; // TODO let is_viewport_focused = false; // TODO
process_viewport_commands(commands, window, is_viewport_focused); process_viewport_commands(commands, window, is_viewport_focused);
} }
active_viewports_ids.insert(id_pair.this); active_viewports_ids.insert(ids.this);
false false
} else { } else {
true true
@@ -1130,31 +1126,28 @@ mod glow_integration {
// Process new viewports: // Process new viewports:
for ViewportOutput { for ViewportOutput {
mut builder, mut builder,
id_pair, ids,
viewport_ui_cb, viewport_ui_cb,
} in viewports } in viewports
{ {
if builder.icon.is_none() { if builder.icon.is_none() {
// Inherit from parent as fallback. // Inherit from parent as fallback.
builder.icon = self builder.icon = self.builders.get(&ids.parent).and_then(|b| b.icon.clone());
.builders
.get(&id_pair.parent)
.and_then(|b| b.icon.clone());
} }
{ {
self.viewports.insert( self.viewports.insert(
id_pair.this, ids.this,
Viewport { Viewport {
gl_surface: None, gl_surface: None,
window: None, window: None,
egui_winit: None, egui_winit: None,
viewport_ui_cb, viewport_ui_cb,
id_pair, ids,
}, },
); );
self.builders.insert(id_pair.this, builder); self.builders.insert(ids.this, builder);
} }
active_viewports_ids.insert(id_pair.this); active_viewports_ids.insert(ids.this);
} }
// GC old viewports // GC old viewports
@@ -1369,7 +1362,7 @@ mod glow_integration {
let event_loop: *const EventLoopWindowTarget<UserEvent> = event_loop; let event_loop: *const EventLoopWindowTarget<UserEvent> = event_loop;
egui::Context::set_immediate_viewport_renderer( egui::Context::set_immediate_viewport_renderer(
move |egui_ctx, viewport_builder, id_pair, viewport_ui_cb| { move |egui_ctx, viewport_builder, ids, viewport_ui_cb| {
if let (Some(glutin), Some(painter)) = (glutin.upgrade(), painter.upgrade()) if let (Some(glutin), Some(painter)) = (glutin.upgrade(), painter.upgrade())
{ {
// SAFETY: the event loop lives longer than // SAFETY: the event loop lives longer than
@@ -1381,7 +1374,7 @@ mod glow_integration {
event_loop, event_loop,
egui_ctx, egui_ctx,
viewport_builder, viewport_builder,
id_pair, ids,
viewport_ui_cb, viewport_ui_cb,
&glutin, &glutin,
&painter, &painter,
@@ -1413,7 +1406,7 @@ mod glow_integration {
event_loop: &EventLoopWindowTarget<UserEvent>, event_loop: &EventLoopWindowTarget<UserEvent>,
egui_ctx: &egui::Context, egui_ctx: &egui::Context,
mut viewport_builder: ViewportBuilder, mut viewport_builder: ViewportBuilder,
id_pair: ViewportIdPair, ids: ViewportIdPair,
viewport_ui_cb: Box<dyn FnOnce(&egui::Context) + '_>, viewport_ui_cb: Box<dyn FnOnce(&egui::Context) + '_>,
glutin: &RefCell<GlutinWindowContext>, glutin: &RefCell<GlutinWindowContext>,
painter: &RefCell<egui_glow::Painter>, painter: &RefCell<egui_glow::Painter>,
@@ -1421,38 +1414,35 @@ mod glow_integration {
) { ) {
crate::profile_function!(); crate::profile_function!();
if !glutin.borrow().viewports.contains_key(&id_pair.this) { if !glutin.borrow().viewports.contains_key(&ids.this) {
// A new viewport - create a window for it! // A new viewport - create a window for it!
let mut glutin = glutin.borrow_mut(); let mut glutin = glutin.borrow_mut();
// Inherit parent icon if none // Inherit parent icon if none
if viewport_builder.icon.is_none() && glutin.builders.get(&id_pair.this).is_none() { if viewport_builder.icon.is_none() && glutin.builders.get(&ids.this).is_none() {
viewport_builder.icon = glutin viewport_builder.icon = glutin
.builders .builders
.get(&id_pair.parent) .get(&ids.parent)
.and_then(|b| b.icon.clone()); .and_then(|b| b.icon.clone());
} }
glutin glutin
.viewports .viewports
.entry(id_pair.this) .entry(ids.this)
.or_insert(Viewport::new(id_pair)); .or_insert(Viewport::new(ids));
glutin.builders.entry(ids.this).or_insert(viewport_builder);
glutin glutin
.builders .init_viewport(ids.this, event_loop)
.entry(id_pair.this)
.or_insert(viewport_builder);
glutin
.init_viewport(id_pair.this, event_loop)
.expect("Failed to initialize window in egui::Context::show_viewport_immediate"); .expect("Failed to initialize window in egui::Context::show_viewport_immediate");
} }
let input = { let input = {
let mut glutin = glutin.borrow_mut(); let mut glutin = glutin.borrow_mut();
let Some(viewport) = glutin.viewports.get_mut(&id_pair.this) else { let Some(viewport) = glutin.viewports.get_mut(&ids.this) else {
return; return;
}; };
@@ -1463,7 +1453,7 @@ mod glow_integration {
return; return;
}; };
let mut input = winit_state.take_egui_input(window, id_pair); let mut input = winit_state.take_egui_input(window, ids);
input.time = Some(beginning.elapsed().as_secs_f64()); input.time = Some(beginning.elapsed().as_secs_f64());
input input
}; };
@@ -1487,7 +1477,7 @@ mod glow_integration {
.. ..
} = &mut *glutin; } = &mut *glutin;
let Some(viewport) = viewports.get_mut(&id_pair.this) else { let Some(viewport) = viewports.get_mut(&ids.this) else {
return; return;
}; };
@@ -1522,14 +1512,14 @@ mod glow_integration {
.unwrap() .unwrap()
.is_current(current_gl_context) .is_current(current_gl_context)
{ {
let builder = &builders[&viewport.id_pair.this]; let builder = &builders[&viewport.ids.this];
log::error!("egui::show_viewport_immediate with title: `{:?}` is not created in main thread, try to use wgpu!", builder.title.clone().unwrap_or_default()); log::error!("egui::show_viewport_immediate with title: `{:?}` is not created in main thread, try to use wgpu!", builder.title.clone().unwrap_or_default());
} }
let gl = &painter.gl().clone(); let gl = &painter.gl().clone();
egui_glow::painter::clear(gl, screen_size_in_pixels, [0.0, 0.0, 0.0, 0.0]); 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(id_pair.this, |i| i.pixels_per_point()); let pixels_per_point = egui_ctx.input_for(ids.this, |i| i.pixels_per_point());
painter.paint_and_update_textures( painter.paint_and_update_textures(
screen_size_in_pixels, screen_size_in_pixels,
pixels_per_point, pixels_per_point,
@@ -1549,7 +1539,7 @@ mod glow_integration {
} }
} }
winit_state.handle_platform_output(window, id_pair.this, egui_ctx, output.platform_output); winit_state.handle_platform_output(window, ids.this, egui_ctx, output.platform_output);
} }
impl WinitApp for GlowWinitApp { impl WinitApp for GlowWinitApp {
@@ -1745,7 +1735,7 @@ mod glow_integration {
running.app.as_mut(), running.app.as_mut(),
event, event,
viewport.egui_winit.as_mut().unwrap(), viewport.egui_winit.as_mut().unwrap(),
viewport.id_pair.this, viewport.ids.this,
); );
} }
} }
@@ -2085,7 +2075,7 @@ mod wgpu_integration {
let event_loop: *const EventLoopWindowTarget<UserEvent> = event_loop; let event_loop: *const EventLoopWindowTarget<UserEvent> = event_loop;
egui::Context::set_immediate_viewport_renderer( egui::Context::set_immediate_viewport_renderer(
move |egui_ctx, viewport_builder, id_pair, viewport_ui_cb| { move |egui_ctx, viewport_builder, ids, viewport_ui_cb| {
if let Some(shared) = shared.upgrade() { if let Some(shared) = shared.upgrade() {
// SAFETY: the event loop lives longer than // SAFETY: the event loop lives longer than
// the Rc:s we just upgraded above. // the Rc:s we just upgraded above.
@@ -2096,7 +2086,7 @@ mod wgpu_integration {
event_loop, event_loop,
egui_ctx, egui_ctx,
viewport_builder, viewport_builder,
id_pair, ids,
viewport_ui_cb, viewport_ui_cb,
beginning, beginning,
&shared, &shared,
@@ -2141,7 +2131,7 @@ mod wgpu_integration {
event_loop: &EventLoopWindowTarget<UserEvent>, event_loop: &EventLoopWindowTarget<UserEvent>,
egui_ctx: &egui::Context, egui_ctx: &egui::Context,
mut viewport_builder: ViewportBuilder, mut viewport_builder: ViewportBuilder,
id_pair: ViewportIdPair, ids: ViewportIdPair,
viewport_ui_cb: Box<dyn FnOnce(&egui::Context) + '_>, viewport_ui_cb: Box<dyn FnOnce(&egui::Context) + '_>,
beginning: Instant, beginning: Instant,
shared: &RefCell<SharedState>, shared: &RefCell<SharedState>,
@@ -2157,15 +2147,15 @@ mod wgpu_integration {
} = &mut *shared; } = &mut *shared;
// Creating a new native window if is needed // Creating a new native window if is needed
if !viewports.contains_key(&id_pair.this) { if !viewports.contains_key(&ids.this) {
if viewport_builder.icon.is_none() { if viewport_builder.icon.is_none() {
viewport_builder.icon = viewports viewport_builder.icon = viewports
.get(&id_pair.parent) .get(&ids.parent)
.and_then(|vp| vp.builder.icon.clone()); .and_then(|vp| vp.builder.icon.clone());
} }
let viewport = viewports.entry(id_pair.this).or_insert(Viewport { let viewport = viewports.entry(ids.this).or_insert(Viewport {
ids: id_pair, ids,
builder: viewport_builder, builder: viewport_builder,
viewport_ui_cb: None, viewport_ui_cb: None,
window: None, window: None,
@@ -2176,7 +2166,7 @@ mod wgpu_integration {
} }
// Render sync viewport: // Render sync viewport:
let Some(viewport) = viewports.get_mut(&id_pair.this) else { let Some(viewport) = viewports.get_mut(&ids.this) else {
return; return;
}; };
let Some(winit_state) = &mut viewport.egui_winit else { let Some(winit_state) = &mut viewport.egui_winit else {
@@ -2186,7 +2176,7 @@ mod wgpu_integration {
return; return;
}; };
let mut input = winit_state.take_egui_input(window, id_pair); let mut input = winit_state.take_egui_input(window, ids);
input.time = Some(beginning.elapsed().as_secs_f64()); input.time = Some(beginning.elapsed().as_secs_f64());
input input
}; };
@@ -2205,7 +2195,7 @@ mod wgpu_integration {
viewports, painter, .. viewports, painter, ..
} = &mut *shared; } = &mut *shared;
let Some(viewport) = viewports.get_mut(&id_pair.this) else { let Some(viewport) = viewports.get_mut(&ids.this) else {
return; return;
}; };
let Some(winit_state) = &mut viewport.egui_winit else { let Some(winit_state) = &mut viewport.egui_winit else {
@@ -2215,17 +2205,17 @@ mod wgpu_integration {
return; return;
}; };
if let Err(err) = pollster::block_on(painter.set_window(id_pair.this, Some(window))) { if let Err(err) = pollster::block_on(painter.set_window(ids.this, Some(window))) {
log::error!( log::error!(
"when rendering viewport_id={:?}, set_window Error {err}", "when rendering viewport_id={:?}, set_window Error {err}",
id_pair.this ids.this
); );
} }
let pixels_per_point = egui_ctx.input_for(id_pair.this, |i| i.pixels_per_point()); let pixels_per_point = egui_ctx.input_for(ids.this, |i| i.pixels_per_point());
let clipped_primitives = egui_ctx.tessellate(output.shapes); let clipped_primitives = egui_ctx.tessellate(output.shapes);
painter.paint_and_update_textures( painter.paint_and_update_textures(
id_pair.this, ids.this,
pixels_per_point, pixels_per_point,
[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0],
&clipped_primitives, &clipped_primitives,
@@ -2233,7 +2223,7 @@ mod wgpu_integration {
false, false,
); );
winit_state.handle_platform_output(window, id_pair.this, egui_ctx, output.platform_output); winit_state.handle_platform_output(window, ids.this, egui_ctx, output.platform_output);
} }
impl WinitApp for WgpuWinitApp { impl WinitApp for WgpuWinitApp {
@@ -2579,7 +2569,7 @@ mod wgpu_integration {
// Update exisitng viewports: // Update exisitng viewports:
out_viewports.retain_mut( out_viewports.retain_mut(
|ViewportOutput { |ViewportOutput {
id_pair: ViewportIdPair { this, parent }, ids: ViewportIdPair { this, parent },
viewport_ui_cb, viewport_ui_cb,
.. ..
}| { }| {
@@ -2597,24 +2587,24 @@ mod wgpu_integration {
// Add new viewports, and update existing ones: // Add new viewports, and update existing ones:
for ViewportOutput { for ViewportOutput {
builder: mut new_builder, builder: mut new_builder,
id_pair, ids,
viewport_ui_cb, viewport_ui_cb,
} in out_viewports } in out_viewports
{ {
active_viewports_ids.insert(id_pair.this); active_viewports_ids.insert(ids.this);
if new_builder.icon.is_none() { if new_builder.icon.is_none() {
// Inherit icon from parent // Inherit icon from parent
new_builder.icon = viewports new_builder.icon = viewports
.get_mut(&id_pair.parent) .get_mut(&ids.parent)
.and_then(|vp| vp.builder.icon.clone()); .and_then(|vp| vp.builder.icon.clone());
} }
match viewports.entry(id_pair.this) { match viewports.entry(ids.this) {
std::collections::hash_map::Entry::Vacant(entry) => { std::collections::hash_map::Entry::Vacant(entry) => {
// New viewport: // New viewport:
entry.insert(Viewport { entry.insert(Viewport {
ids: id_pair, ids,
builder: new_builder, builder: new_builder,
viewport_ui_cb, viewport_ui_cb,
window: None, window: None,
@@ -2626,14 +2616,17 @@ mod wgpu_integration {
// Patch an existing viewport: // Patch an existing viewport:
let viewport = entry.get_mut(); let viewport = entry.get_mut();
viewport.ids.parent = ids.parent;
viewport.viewport_ui_cb = viewport_ui_cb;
let (commands, recreate) = viewport.builder.patch(&new_builder); let (commands, recreate) = viewport.builder.patch(&new_builder);
if recreate { if recreate {
if let Some(viewport) = viewports.get_mut(&id_pair.this) { if let Some(viewport) = viewports.get_mut(&ids.this) {
viewport.window = None; viewport.window = None;
viewport.egui_winit = None; viewport.egui_winit = None;
} }
} else if let Some(viewport) = viewports.get(&id_pair.this) { } else if let Some(viewport) = viewports.get(&ids.this) {
if let Some(window) = &viewport.window { if let Some(window) = &viewport.window {
let is_viewport_focused = focused_viewport == Some(viewport_id); let is_viewport_focused = focused_viewport == Some(viewport_id);
process_viewport_commands(commands, window, is_viewport_focused); process_viewport_commands(commands, window, is_viewport_focused);

View File

@@ -180,7 +180,7 @@ impl State {
pub fn take_egui_input( pub fn take_egui_input(
&mut self, &mut self,
window: &winit::window::Window, window: &winit::window::Window,
id_pair: ViewportIdPair, ids: ViewportIdPair,
) -> egui::RawInput { ) -> egui::RawInput {
crate::profile_function!(); crate::profile_function!();
@@ -243,7 +243,7 @@ impl State {
None None
}; };
self.egui_input.viewport.id_pair = id_pair; self.egui_input.viewport.ids = ids;
self.egui_input.viewport.inner_rect_px = self.egui_input.viewport.inner_rect_px =
if let (Some(pos), Some(size)) = (inner_pos_px, inner_size_px) { if let (Some(pos), Some(size)) = (inner_pos_px, inner_size_px) {
Some(Rect::from_min_size(pos, size)) Some(Rect::from_min_size(pos, size))

View File

@@ -194,10 +194,10 @@ struct ContextImpl {
impl ContextImpl { impl ContextImpl {
fn begin_frame_mut(&mut self, mut new_raw_input: RawInput) { fn begin_frame_mut(&mut self, mut new_raw_input: RawInput) {
let id_pair = new_raw_input.viewport.id_pair; let ids = new_raw_input.viewport.ids;
let viewport_id = id_pair.this; let viewport_id = ids.this;
self.viewport_stack.push(id_pair); self.viewport_stack.push(ids);
self.output.entry(self.viewport_id()).or_default(); self.output.entry(self.viewport_id()).or_default();
self.repaint.start_frame(self.viewport_id()); self.repaint.start_frame(self.viewport_id());
@@ -1318,7 +1318,7 @@ impl Context {
if pixels_per_point != self.pixels_per_point() { if pixels_per_point != self.pixels_per_point() {
self.write(|ctx| { self.write(|ctx| {
for viewport in ctx.viewports.values() { for viewport in ctx.viewports.values() {
ctx.repaint.request_repaint_settle(viewport.id_pair.this); ctx.repaint.request_repaint_settle(viewport.ids.this);
} }
ctx.repaint.request_repaint_settle(ViewportId::ROOT); ctx.repaint.request_repaint_settle(ViewportId::ROOT);
ctx.memory.override_pixels_per_point = Some(pixels_per_point); ctx.memory.override_pixels_per_point = Some(pixels_per_point);
@@ -1471,7 +1471,7 @@ impl Context {
.remove(&ctx.viewport_id()) .remove(&ctx.viewport_id())
.unwrap(), .unwrap(),
); );
ctx.viewports.values().map(|vp| vp.id_pair.this).collect() ctx.viewports.values().map(|vp| vp.ids.this).collect()
}); });
viewports.insert(ViewportId::ROOT); viewports.insert(ViewportId::ROOT);
@@ -1545,14 +1545,14 @@ impl Context {
ctx.viewports.retain(|_, viewport| { ctx.viewports.retain(|_, viewport| {
let was_used = viewport.used; let was_used = viewport.used;
if viewport_id == viewport.id_pair.parent { if viewport_id == viewport.ids.parent {
viewport.used = false; // reset so we can check again next frame viewport.used = false; // reset so we can check again next frame
} }
if all_viewport_ids.contains(&viewport.id_pair.parent) { if all_viewport_ids.contains(&viewport.ids.parent) {
viewports.push(ViewportOutput { viewports.push(ViewportOutput {
builder: viewport.builder.clone(), builder: viewport.builder.clone(),
id_pair: viewport.id_pair, ids: viewport.ids,
viewport_ui_cb: viewport.viewport_ui_cb.clone(), viewport_ui_cb: viewport.viewport_ui_cb.clone(),
}); });
} else { } else {
@@ -1560,7 +1560,7 @@ impl Context {
return false; return false;
} }
let is_child = viewport_id == viewport.id_pair.parent; let is_child = viewport_id == viewport.ids.parent;
let result = if is_child { let result = if is_child {
// Keep all children that have been updated this frame // Keep all children that have been updated this frame
@@ -1571,7 +1571,7 @@ impl Context {
}; };
if result { if result {
all_viewport_ids.insert(viewport.id_pair.this); all_viewport_ids.insert(viewport.ids.this);
} }
result result
@@ -2587,14 +2587,14 @@ impl Context {
let viewport_id = ctx.viewport_id(); let viewport_id = ctx.viewport_id();
if let Some(window) = ctx.viewports.get_mut(&viewport_builder.id) { if let Some(window) = ctx.viewports.get_mut(&viewport_builder.id) {
window.builder = viewport_builder.clone(); window.builder = viewport_builder.clone();
window.id_pair.parent = viewport_id; window.ids.parent = viewport_id;
window.used = true; window.used = true;
window.viewport_ui_cb = Some(Arc::new(Box::new(viewport_ui_cb))); window.viewport_ui_cb = Some(Arc::new(Box::new(viewport_ui_cb)));
} else { } else {
ctx.viewports.insert( ctx.viewports.insert(
viewport_builder.id, viewport_builder.id,
ViewportState { ViewportState {
id_pair: ViewportIdPair { ids: ViewportIdPair {
this: viewport_builder.id, this: viewport_builder.id,
parent: viewport_id, parent: viewport_id,
}, },
@@ -2644,19 +2644,19 @@ impl Context {
return viewport_ui_cb(self); return viewport_ui_cb(self);
}; };
let id_pair = self.write(|ctx| { let ids = self.write(|ctx| {
let parent = ctx.viewport_id(); let parent = ctx.viewport_id();
if let Some(window) = ctx.viewports.get_mut(&viewport_builder.id) { if let Some(window) = ctx.viewports.get_mut(&viewport_builder.id) {
// Existing // Existing
window.builder = viewport_builder.clone(); window.builder = viewport_builder.clone();
window.id_pair.parent = parent; window.ids.parent = parent;
window.used = true; window.used = true;
window.viewport_ui_cb = None; window.viewport_ui_cb = None;
window.id_pair window.ids
} else { } else {
// New // New
let id_pair = ViewportIdPair { let ids = ViewportIdPair {
this: viewport_builder.id, this: viewport_builder.id,
parent, parent,
}; };
@@ -2664,12 +2664,12 @@ impl Context {
viewport_builder.id, viewport_builder.id,
ViewportState { ViewportState {
builder: viewport_builder.clone(), builder: viewport_builder.clone(),
id_pair, ids,
used: true, used: true,
viewport_ui_cb: None, viewport_ui_cb: None,
}, },
); );
id_pair ids
} }
}); });
@@ -2680,7 +2680,7 @@ impl Context {
immediate_viewport_renderer( immediate_viewport_renderer(
self, self,
viewport_builder.clone(), viewport_builder.clone(),
id_pair, ids,
Box::new(move |context| *out = Some(viewport_ui_cb(context))), Box::new(move |context| *out = Some(viewport_ui_cb(context))),
); );
} }

View File

@@ -143,7 +143,7 @@ impl RawInput {
#[derive(Clone, Debug, Default, PartialEq, Eq)] #[derive(Clone, Debug, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))] #[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
pub struct ViewportInfo { pub struct ViewportInfo {
pub id_pair: ViewportIdPair, pub ids: ViewportIdPair,
/// Viewport inner position and size, only the drowable area /// Viewport inner position and size, only the drowable area
/// unit = physical pixels /// unit = physical pixels
@@ -164,12 +164,12 @@ impl ViewportInfo {
pub fn ui(&self, ui: &mut crate::Ui) { pub fn ui(&self, ui: &mut crate::Ui) {
let Self { let Self {
id_pair, ids,
inner_rect_px, inner_rect_px,
outer_rect_px, outer_rect_px,
close_requested, close_requested,
} = self; } = self;
ui.label(format!("id_pair: {id_pair:?}")); ui.label(format!("ids: {ids:?}"));
ui.label(format!("inner_rect_px: {inner_rect_px:?}")); ui.label(format!("inner_rect_px: {inner_rect_px:?}"));
ui.label(format!("outer_rect_px: {outer_rect_px:?}")); ui.label(format!("outer_rect_px: {outer_rect_px:?}"));
ui.label(format!("close_requested: {close_requested:?}")); ui.label(format!("close_requested: {close_requested:?}"));

View File

@@ -560,7 +560,7 @@ impl Memory {
self.window_interactions self.window_interactions
.retain(|id, _| viewports.contains(id)); .retain(|id, _| viewports.contains(id));
self.viewport_id = new_input.viewport.id_pair.this; self.viewport_id = new_input.viewport.ids.this;
self.interactions self.interactions
.entry(self.viewport_id) .entry(self.viewport_id)
.or_default() .or_default()

View File

@@ -704,7 +704,7 @@ pub(crate) struct ViewportState {
pub(crate) builder: ViewportBuilder, pub(crate) builder: ViewportBuilder,
/// Id of us and our parent. /// Id of us and our parent.
pub(crate) id_pair: ViewportIdPair, pub(crate) ids: ViewportIdPair,
/// Has this viewport been updated this frame? /// Has this viewport been updated this frame?
pub(crate) used: bool, pub(crate) used: bool,
@@ -719,7 +719,7 @@ pub(crate) struct ViewportState {
#[derive(Clone)] #[derive(Clone)]
pub struct ViewportOutput { pub struct ViewportOutput {
/// Id of us and our parent. /// Id of us and our parent.
pub id_pair: ViewportIdPair, pub ids: ViewportIdPair,
pub builder: ViewportBuilder, pub builder: ViewportBuilder,
@@ -731,6 +731,6 @@ pub struct ViewportOutput {
impl ViewportOutput { impl ViewportOutput {
pub fn id(&self) -> ViewportId { pub fn id(&self) -> ViewportId {
self.id_pair.this self.ids.this
} }
} }