FIX SIZE CACHE

This commit is contained in:
2025-12-17 00:09:20 -05:00
parent ecbb9e56e2
commit 1363f31fcd
9 changed files with 144 additions and 178 deletions

View File

@@ -1,9 +1,9 @@
use crate::{
Axis, Len, RenderedText, Size, SizeCtx, TextAttrs, TextBuffer, TextData, TextureHandle,
UiRegion, UiVec2, WidgetHandle, WidgetId,
UiRegion, Widget, WidgetHandle, WidgetId,
render::{Mask, MaskIdx, Primitive, PrimitiveHandle, PrimitiveInst},
ui::draw_state::DrawState,
util::{HashMap, Vec2},
util::Vec2,
};
/// makes your surfaces look pretty
@@ -15,8 +15,6 @@ pub struct Painter<'a, 'b, State> {
pub(super) textures: Vec<TextureHandle>,
pub(super) primitives: Vec<PrimitiveHandle>,
pub(super) children: Vec<WidgetId>,
pub(super) children_width: HashMap<WidgetId, (UiVec2, Len)>,
pub(super) children_height: HashMap<WidgetId, (UiVec2, Len)>,
pub layer: usize,
pub(super) id: WidgetId,
}
@@ -97,11 +95,15 @@ impl<'a, 'c, State: 'static> Painter<'a, 'c, State> {
self.region
}
pub fn size<W: ?Sized>(&mut self, id: &WidgetHandle<State, W>) -> Size {
pub fn size<W: ?Sized + Widget<State>>(&mut self, id: &WidgetHandle<State, W>) -> Size {
self.size_ctx().size(id)
}
pub fn len_axis<W: ?Sized>(&mut self, id: &WidgetHandle<State, W>, axis: Axis) -> Len {
pub fn len_axis<W: ?Sized + Widget<State>>(
&mut self,
id: &WidgetHandle<State, W>,
axis: Axis,
) -> Len {
match axis {
Axis::X => self.size_ctx().width(id),
Axis::Y => self.size_ctx().height(id),
@@ -137,12 +139,6 @@ impl<'a, 'c, State: 'static> Painter<'a, 'c, State> {
}
pub fn size_ctx(&mut self) -> SizeCtx<'_, State> {
self.state.size_ctx(
self.id,
self.region.size(),
self.id,
&mut self.children_width,
&mut self.children_height,
)
self.state.size_ctx(self.id, self.region.size())
}
}