From 831cfa2457587b662dcf5f03decd89bcb905343b Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sun, 2 Jul 2023 17:24:31 +0200 Subject: [PATCH] Fix: always auto-layout spaceviews until the user interveens Fixes a bug where the first time you load a message stream the layout would be different than if you would hit the reset/auto-layout button. --- crates/re_viewport/src/viewport.rs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/crates/re_viewport/src/viewport.rs b/crates/re_viewport/src/viewport.rs index d6ac0c9d5fed..d1ef59dc547e 100644 --- a/crates/re_viewport/src/viewport.rs +++ b/crates/re_viewport/src/viewport.rs @@ -443,14 +443,21 @@ impl Viewport { self.space_views.insert(space_view_id, space_view); - if let Some(root_id) = self.tree.root { + if self.has_been_user_edited { // Try to insert it in the tree, in the top level: - let tile_id = self.tree.tiles.insert_pane(space_view_id); - if let Some(egui_tiles::Tile::Container(container)) = self.tree.tiles.get_mut(root_id) { - container.add_child(tile_id); - } else { - self.tree = Default::default(); // we'll just re-initialize later instead + if let Some(root_id) = self.tree.root { + let tile_id = self.tree.tiles.insert_pane(space_view_id); + if let Some(egui_tiles::Tile::Container(container)) = + self.tree.tiles.get_mut(root_id) + { + container.add_child(tile_id); + } else { + self.tree = Default::default(); // we'll just re-initialize later instead + } } + } else { + // Re-run the auto-layout next frame: + self.tree = Default::default(); } space_view_id