From d2894ce9c99586e9cd0588fa9b4db27bbd64f0ca Mon Sep 17 00:00:00 2001 From: Piotr Osiewicz <24362066+osiewicz@users.noreply.github.com> Date: Thu, 19 Sep 2024 17:00:26 +0200 Subject: [PATCH] pane: Do not autopin new item created as a neighbour of pinned tab (#18072) When I used editor::NewFile or ProjectSearch from a pinned tab, the resulting new tab would be pinned (and the last pinned tab would be pushed off). This PR fixes it by always storing new tabs outside of the pinned area if there's no destination index for the new tab. Release Notes: - Fixed tab bar not preserving pinned tab state when an editor::NewFile action is executed. --- crates/workspace/src/pane.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index 09b4683c0c..a5f83f961f 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -831,13 +831,14 @@ impl Pane { } } } - // If no destination index is specified, add or move the item after the active item. + // If no destination index is specified, add or move the item after the + // active item (or at the start of tab bar, if the active item is pinned) let mut insertion_index = { cmp::min( if let Some(destination_index) = destination_index { destination_index } else { - self.active_item_index + 1 + cmp::max(self.active_item_index + 1, self.pinned_count()) }, self.items.len(), )