diff --git a/crates/egui/src/id.rs b/crates/egui/src/id.rs index 682818f9..bca44506 100644 --- a/crates/egui/src/id.rs +++ b/crates/egui/src/id.rs @@ -65,8 +65,9 @@ impl Id { format!("{:04X}", self.0 as u16) } + /// The contained value. #[inline(always)] - pub(crate) fn value(&self) -> u64 { + pub fn value(&self) -> u64 { self.0 } } diff --git a/crates/egui/src/ui.rs b/crates/egui/src/ui.rs index cb4b9021..ef8472cb 100644 --- a/crates/egui/src/ui.rs +++ b/crates/egui/src/ui.rs @@ -97,17 +97,19 @@ impl Ui { id_source: impl Hash, ) -> Self { crate::egui_assert!(!max_rect.any_nan()); - let next_auto_id_source = Id::new(self.next_auto_id_source).with("child").value(); + let child_id = self.id.with(id_source); + let child_next_auto_id_source = child_id.with(self.next_auto_id_source).value(); + self.next_auto_id_source = self.next_auto_id_source.wrapping_add(1); - let menu_state = self.menu_state(); + Ui { - id: self.id.with(id_source), - next_auto_id_source, + id: child_id, + next_auto_id_source: child_next_auto_id_source, painter: self.painter.clone(), style: self.style.clone(), placer: Placer::new(max_rect, layout), enabled: self.enabled, - menu_state, + menu_state: self.menu_state.clone(), } } @@ -2118,10 +2120,6 @@ impl Ui { self.menu_state = None; } - pub(crate) fn menu_state(&self) -> Option>> { - self.menu_state.clone() - } - pub(crate) fn set_menu_state(&mut self, menu_state: Option>>) { self.menu_state = menu_state; }