stack & padding fix sorta, preparing for scroll areas

This commit is contained in:
2025-09-25 19:59:18 -04:00
parent 273a92d1f7
commit 6d829dbe81
10 changed files with 151 additions and 45 deletions

View File

@@ -69,9 +69,19 @@ impl<'a> PainterCtx<'a> {
};
if let Some((rid, size)) = &active.resize {
self.redraw(&rid.duplicate());
if self.drawing.contains(id) {
return;
let checked = &mut HashMap::default();
let mut ctx = SizeCtx {
checked,
text: self.text,
textures: self.textures,
widgets: self.widgets,
};
let desired = ctx.size_inner(id);
if *size != desired {
self.redraw(&rid.duplicate());
if self.drawing.contains(id) {
return;
}
}
}
@@ -298,14 +308,17 @@ pub struct SizeCtx<'a> {
}
impl SizeCtx<'_> {
fn size_inner(&mut self, id: &Id) -> UiVec2 {
let size = self.widgets.get_dyn_dynamic(id).desired_size(self);
self.checked.insert(id.duplicate(), size);
size
}
pub fn size<W>(&mut self, id: &WidgetId<W>) -> UiVec2 {
// TODO: determine if this is useful
// if let Some(size) = self.checked.get(&id.id) {
// return Some(*size);
// }
let size = self.widgets.get_dyn_dynamic(&id.id).desired_size(self);
self.checked.insert(id.id.duplicate(), size);
size
self.size_inner(&id.id)
}
pub fn draw_text(
&mut self,