diff --git a/egui/src/layout.rs b/egui/src/layout.rs index 1004f177..5fc8ef3b 100644 --- a/egui/src/layout.rs +++ b/egui/src/layout.rs @@ -1,4 +1,4 @@ -use crate::{math::*, style::Style, Align}; +use crate::{math::*, Align}; // ---------------------------------------------------------------------------- @@ -176,6 +176,14 @@ impl Layout { } } + /// Advance the cursor by this spacing + pub fn advance_cursor2(self, cursor: &mut Pos2, amount: Vec2) { + match self.dir() { + Direction::Horizontal => self.advance_cursor(cursor, amount.x), + Direction::Vertical => self.advance_cursor(cursor, amount.y), + } + } + pub fn rect_from_cursor_size(self, cursor: Pos2, size: Vec2) -> Rect { let mut rect = Rect::from_min_size(cursor, size); @@ -212,12 +220,12 @@ impl Layout { pub fn allocate_space( self, cursor: &mut Pos2, - style: &Style, available_size: Vec2, - mut child_size: Vec2, + minimum_child_size: Vec2, ) -> Rect { - let available_size = available_size.at_least(child_size); + let available_size = available_size.at_least(minimum_child_size); + let mut child_size = minimum_child_size; let mut child_move = Vec2::default(); let mut cursor_change = Vec2::default(); @@ -235,7 +243,6 @@ impl Layout { } cursor_change.x += child_size.x; - cursor_change.x += style.spacing.item_spacing.x; // Where to put next thing, if there is a next thing } Direction::Vertical => { if let Some(align) = self.align { @@ -249,7 +256,6 @@ impl Layout { child_size.x = child_size.x.max(available_size.x); }; cursor_change.y += child_size.y; - cursor_change.y += style.spacing.item_spacing.y; // Where to put next thing, if there is a next thing } } diff --git a/egui/src/ui.rs b/egui/src/ui.rs index 703db922..40182306 100644 --- a/egui/src/ui.rs +++ b/egui/src/ui.rs @@ -475,11 +475,12 @@ impl Ui { /// Returns where to put the widget. fn reserve_space_impl(&mut self, child_size: Vec2) -> Rect { let available_size = self.available_finite().size(); - let child_rect = - self.layout - .allocate_space(&mut self.cursor, &self.style, available_size, child_size); - self.min_rect = self.min_rect.union(child_rect); - self.max_rect = self.max_rect.union(child_rect); + let child_rect = self + .layout + .allocate_space(&mut self.cursor, available_size, child_size); + let item_spacing = self.style().spacing.item_spacing; + self.layout.advance_cursor2(&mut self.cursor, item_spacing); + self.expand_to_include_rect(child_rect); self.child_count += 1; child_rect }