From e032b0b5ee553bb8094660b0fd0eada7f430df76 Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Wed, 22 Jan 2025 13:42:04 -0800 Subject: [PATCH] Center toplevels if they don't fill space --- src/widgets/toplevels/toplevel_layout/mod.rs | 1 + .../toplevels/toplevel_layout/row_col_toplevel_layout.rs | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/widgets/toplevels/toplevel_layout/mod.rs b/src/widgets/toplevels/toplevel_layout/mod.rs index 2de767c..a6cf285 100644 --- a/src/widgets/toplevels/toplevel_layout/mod.rs +++ b/src/widgets/toplevels/toplevel_layout/mod.rs @@ -8,6 +8,7 @@ mod row_col_toplevel_layout; mod utils; pub(crate) use row_col_toplevel_layout::RowColToplevelLayout; +#[derive(Debug)] pub(crate) struct LayoutToplevel<'a> { //toplevel: &'a crate::Toplevel, /// Preferred size of the child widget, if it fill the parent container diff --git a/src/widgets/toplevels/toplevel_layout/row_col_toplevel_layout.rs b/src/widgets/toplevels/toplevel_layout/row_col_toplevel_layout.rs index 73e1235..48490a9 100644 --- a/src/widgets/toplevels/toplevel_layout/row_col_toplevel_layout.rs +++ b/src/widgets/toplevels/toplevel_layout/row_col_toplevel_layout.rs @@ -31,7 +31,10 @@ impl ToplevelLayout for RowColToplevelLayout { let scale_factor = (self.axis.main(max_limit) / requested_main_total).min(1.0); let max_cross = self.axis.cross(max_limit); - let mut total_main = 0.0; + // Add padding to center if total requested size doesn't fill available space + let padding = (self.axis.main(max_limit) - requested_main_total).max(0.) / 2.; + + let mut total_main = padding; let mut first = true; toplevels.iter().map(move |child| { let requested_main = self.axis.main(child.preferred_size);