From 04135aaa9ce6449a557a7df7b77bb23fe5241f41 Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Thu, 31 Mar 2022 15:11:01 +0200 Subject: [PATCH] Fix table width size bug --- egui_extras/src/table.rs | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/egui_extras/src/table.rs b/egui_extras/src/table.rs index 5ef5bc67..b105a886 100644 --- a/egui_extras/src/table.rs +++ b/egui_extras/src/table.rs @@ -93,18 +93,22 @@ impl<'a> TableBuilder<'a> { self } + fn available_width(&self) -> f32 { + self.ui.available_rect_before_wrap().width() + - 2.0 * self.ui.spacing().item_spacing.x + - if self.scroll { + self.ui.spacing().scroll_bar_width + } else { + 0.0 + } + } + /// Create a header row which always stays visible and at the top pub fn header(self, height: f32, header: impl FnOnce(TableRow<'_, '_>)) -> Table<'a> { - let widths = self.sizing.into_lengths( - self.ui.available_rect_before_wrap().width() - - self.ui.spacing().item_spacing.x - - if self.scroll { - self.ui.spacing().scroll_bar_width - } else { - 0.0 - }, - self.ui.spacing().item_spacing.x, - ); + let available_width = self.available_width(); + let widths = self + .sizing + .into_lengths(available_width, self.ui.spacing().item_spacing.x); let ui = self.ui; { let mut layout = StripLayout::new(ui, CellDirection::Horizontal); @@ -131,10 +135,10 @@ impl<'a> TableBuilder<'a> { where F: for<'b> FnOnce(TableBody<'b>), { - let widths = self.sizing.into_lengths( - self.ui.available_rect_before_wrap().width(), - self.ui.spacing().item_spacing.x, - ); + let available_width = self.available_width(); + let widths = self + .sizing + .into_lengths(available_width, self.ui.spacing().item_spacing.x); Table { ui: self.ui,