diff --git a/src/widgets/align.rs b/src/widgets/align.rs index eb5da22..403f883 100644 --- a/src/widgets/align.rs +++ b/src/widgets/align.rs @@ -150,6 +150,7 @@ impl FrameInfo { fn measure(&self, available: ConstraintLimit, content: UPx) -> (UPx, UPx, UPx) { match available { ConstraintLimit::Fill(size) => { + let size = size.max(content); let remaining = size.saturating_sub(content); let (a, b) = match (self.a, self.b) { (Some(a), Some(b)) => (a, b), diff --git a/src/window.rs b/src/window.rs index 0892a72..42c2809 100644 --- a/src/window.rs +++ b/src/window.rs @@ -664,7 +664,7 @@ where window_size.map(ConstraintLimit::SizeToFit) }); let actual_size = if root_mode == RootMode::Align { - window_size + window_size.max(layout_size) } else { layout_size }; @@ -680,6 +680,10 @@ where let _ = layout_context .winit() .request_inner_size(PhysicalSize::from(new_size)); + } else if render_size != actual_size && resizable { + let _ = layout_context + .winit() + .request_inner_size(PhysicalSize::from(actual_size)); } self.root.set_layout(Rect::from(render_size.into_signed()));