From b4947db850bee50dd08f971e5984b4d1b7422e92 Mon Sep 17 00:00:00 2001 From: shadow cat Date: Fri, 14 Nov 2025 14:39:08 -0500 Subject: [PATCH] I give up on retained for now lmao --- src/layout/orientation.rs | 4 ++-- src/layout/painter.rs | 18 +++++++++++++++++- src/layout/pos.rs | 8 +++++++- src/layout/ui.rs | 11 +++++++---- src/layout/widget.rs | 2 +- 5 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/layout/orientation.rs b/src/layout/orientation.rs index 9906fbc..d9f46f5 100644 --- a/src/layout/orientation.rs +++ b/src/layout/orientation.rs @@ -103,13 +103,13 @@ impl Align { } } -#[derive(Default, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub struct Size { pub x: Len, pub y: Len, } -#[derive(Clone, Copy, PartialEq)] +#[derive(Debug, Clone, Copy, PartialEq)] pub struct Len { pub abs: f32, pub rel: f32, diff --git a/src/layout/painter.rs b/src/layout/painter.rs index e520c98..f2e9494 100644 --- a/src/layout/painter.rs +++ b/src/layout/painter.rs @@ -84,6 +84,14 @@ impl<'a> PainterCtx<'a> { return; }; + if self.widgets.label(&id) == "debug* area" { + if let Some((id, _)) = &active.resize { + println!("RESIZE: {:?}", self.widgets.label(id)); + } else { + println!("RESIZE: NONE"); + } + } + if let Some((rid, size)) = active.resize { let checked = &mut HashMap::default(); let mut ctx = SizeCtx { @@ -105,10 +113,18 @@ impl<'a> PainterCtx<'a> { } } + if self.widgets.label(&id) == "debug* area" { + println!("redraw proceeding"); + } + let Some(active) = self.remove(id) else { return; }; + if self.widgets.label(&id) == "debug* area" { + println!("redraw actually"); + } + self.draw_inner( active.layer, id, @@ -188,7 +204,7 @@ impl<'a> PainterCtx<'a> { widgets: painter.ctx.widgets, checked: &mut Default::default(), screen_size: painter.ctx.screen_size, - px_dependent: painter.ctx.px_dependent, + px_dependent: &mut Default::default(), id: painter.id, size: UiVec2::FULL_SIZE, } diff --git a/src/layout/pos.rs b/src/layout/pos.rs index a90b7d0..ef5a87d 100644 --- a/src/layout/pos.rs +++ b/src/layout/pos.rs @@ -318,7 +318,13 @@ impl UiRegion { impl Display for UiRegion { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{} -> {}", self.top_left, self.bot_right) + write!( + f, + "{} -> {} (size: {})", + self.top_left, + self.bot_right, + self.size() + ) } } diff --git a/src/layout/ui.rs b/src/layout/ui.rs index 442fbf4..b13c1c8 100644 --- a/src/layout/ui.rs +++ b/src/layout/ui.rs @@ -134,11 +134,14 @@ impl Ui { } fn redraw_updates(&mut self) { - let mut ctx = PainterCtx::new(&mut self.data); - for id in self.updates.drain(..) { - ctx.redraw(id); + if self.updates.drain(..).next().is_some() { + self.redraw_all(); } - self.free(); + // let mut ctx = PainterCtx::new(&mut self.data); + // for id in self.updates.drain(..) { + // ctx.redraw(id); + // } + // self.free(); } /// free any resources that don't have references anymore diff --git a/src/layout/widget.rs b/src/layout/widget.rs index f507e73..56da988 100644 --- a/src/layout/widget.rs +++ b/src/layout/widget.rs @@ -1,4 +1,4 @@ -use crate::layout::{Painter, SizeCtx, StaticWidgetId, Ui, Size, WidgetId, WidgetIdFn}; +use crate::layout::{AnyWidget, Painter, Size, SizeCtx, StaticWidgetId, Ui, WidgetId, WidgetIdFn}; use std::{any::Any, marker::PhantomData};