Set the `sizing_pass` flag in first frame of `egui_extras::Table` (#4613)

* Closes https://github.com/emilk/egui/issues/4535

This should improve the auto-sizing of columns when nesting expanding
widgets (e.g. `Separator`), or centered or justified layouts.
This commit is contained in:
Emil Ernerfeldt 2024-06-05 12:17:15 +02:00 committed by GitHub
parent a50f253b76
commit 0028764e02
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 10 additions and 3 deletions

View File

@ -437,8 +437,11 @@ impl<'a> TableBuilder<'a> {
let table_top = ui.cursor().top();
// Hide first-frame-jitters when auto-sizing.
ui.add_visible_ui(!first_frame_auto_size_columns, |ui| {
ui.scope(|ui| {
if first_frame_auto_size_columns {
// Hide first-frame-jitters when auto-sizing.
ui.set_sizing_pass();
}
let mut layout = StripLayout::new(ui, CellDirection::Horizontal, cell_layout, sense);
let mut response: Option<Response> = None;
add_header_row(TableRow {
@ -648,7 +651,11 @@ impl<'a> Table<'a> {
let clip_rect = ui.clip_rect();
// Hide first-frame-jitters when auto-sizing.
ui.add_visible_ui(!first_frame_auto_size_columns, |ui| {
ui.scope(|ui| {
if first_frame_auto_size_columns {
ui.set_sizing_pass();
}
let hovered_row_index_id = self.state_id.with("__table_hovered_row");
let hovered_row_index =
ui.data_mut(|data| data.remove_temp::<usize>(hovered_row_index_id));