Auto-ids are seeded based on Ui::id

This commit is contained in:
Emil Ernerfeldt 2022-11-08 08:34:24 +01:00
parent c8771cd13e
commit 64113fa4db
2 changed files with 9 additions and 10 deletions

View file

@ -65,8 +65,9 @@ impl Id {
format!("{:04X}", self.0 as u16) format!("{:04X}", self.0 as u16)
} }
/// The contained value.
#[inline(always)] #[inline(always)]
pub(crate) fn value(&self) -> u64 { pub fn value(&self) -> u64 {
self.0 self.0
} }
} }

View file

@ -97,17 +97,19 @@ impl Ui {
id_source: impl Hash, id_source: impl Hash,
) -> Self { ) -> Self {
crate::egui_assert!(!max_rect.any_nan()); 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); self.next_auto_id_source = self.next_auto_id_source.wrapping_add(1);
let menu_state = self.menu_state();
Ui { Ui {
id: self.id.with(id_source), id: child_id,
next_auto_id_source, next_auto_id_source: child_next_auto_id_source,
painter: self.painter.clone(), painter: self.painter.clone(),
style: self.style.clone(), style: self.style.clone(),
placer: Placer::new(max_rect, layout), placer: Placer::new(max_rect, layout),
enabled: self.enabled, enabled: self.enabled,
menu_state, menu_state: self.menu_state.clone(),
} }
} }
@ -2118,10 +2120,6 @@ impl Ui {
self.menu_state = None; self.menu_state = None;
} }
pub(crate) fn menu_state(&self) -> Option<Arc<RwLock<MenuState>>> {
self.menu_state.clone()
}
pub(crate) fn set_menu_state(&mut self, menu_state: Option<Arc<RwLock<MenuState>>>) { pub(crate) fn set_menu_state(&mut self, menu_state: Option<Arc<RwLock<MenuState>>>) {
self.menu_state = menu_state; self.menu_state = menu_state;
} }