diff --git a/crates/assistant/src/assistant_panel.rs b/crates/assistant/src/assistant_panel.rs index 515f357b5677c..8030fc8341b44 100644 --- a/crates/assistant/src/assistant_panel.rs +++ b/crates/assistant/src/assistant_panel.rs @@ -465,7 +465,7 @@ impl AssistantPanel { true } - pane::Event::RemoveItem { .. } => { + pane::Event::RemovedItem { .. } => { cx.emit(AssistantPanelEvent::ContextEdited); true } diff --git a/crates/tab_switcher/src/tab_switcher.rs b/crates/tab_switcher/src/tab_switcher.rs index 9572a9ec37294..fe8227f661bd0 100644 --- a/crates/tab_switcher/src/tab_switcher.rs +++ b/crates/tab_switcher/src/tab_switcher.rs @@ -173,7 +173,7 @@ impl TabSwitcherDelegate { }; cx.subscribe(&pane, |tab_switcher, _, event, cx| { match event { - PaneEvent::AddItem { .. } | PaneEvent::RemoveItem { .. } | PaneEvent::Remove => { + PaneEvent::AddItem { .. } | PaneEvent::RemovedItem { .. } | PaneEvent::Remove => { tab_switcher.picker.update(cx, |picker, cx| { let selected_item_id = picker.delegate.selected_item_id(); picker.delegate.update_matches(cx); diff --git a/crates/terminal_view/src/terminal_panel.rs b/crates/terminal_view/src/terminal_panel.rs index 2b9e68e75fb27..ee9a0ae246d3f 100644 --- a/crates/terminal_view/src/terminal_panel.rs +++ b/crates/terminal_view/src/terminal_panel.rs @@ -342,7 +342,7 @@ impl TerminalPanel { ) { match event { pane::Event::ActivateItem { .. } => self.serialize(cx), - pane::Event::RemoveItem { .. } => self.serialize(cx), + pane::Event::RemovedItem { .. } => self.serialize(cx), pane::Event::Remove => cx.emit(PanelEvent::Close), pane::Event::ZoomIn => cx.emit(PanelEvent::ZoomIn), pane::Event::ZoomOut => cx.emit(PanelEvent::ZoomOut), diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index 3bc781e199668..0550e937e94b1 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -169,7 +169,8 @@ pub enum Event { AddItem { item: Box }, ActivateItem { local: bool }, Remove, - RemoveItem { item_id: EntityId }, + RemoveItem { idx: usize }, + RemovedItem { item_id: EntityId }, Split(SplitDirection), ChangeItemTitle, Focus, @@ -189,8 +190,9 @@ impl fmt::Debug for Event { .field("local", local) .finish(), Event::Remove => f.write_str("Remove"), - Event::RemoveItem { item_id } => f - .debug_struct("RemoveItem") + Event::RemoveItem { idx } => f.debug_struct("RemoveItem").field("idx", idx).finish(), + Event::RemovedItem { item_id } => f + .debug_struct("RemovedItem") .field("item_id", item_id) .finish(), Event::Split(direction) => f @@ -1302,9 +1304,11 @@ impl Pane { } } + cx.emit(Event::RemoveItem { idx: item_index }); + let item = self.items.remove(item_index); - cx.emit(Event::RemoveItem { + cx.emit(Event::RemovedItem { item_id: item.item_id(), }); if self.items.is_empty() { diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 1ca28269b4993..db1224987184f 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -2903,7 +2903,8 @@ impl Workspace { } self.update_window_edited(cx); } - pane::Event::RemoveItem { item_id } => { + pane::Event::RemoveItem { .. } => {} + pane::Event::RemovedItem { item_id } => { cx.emit(Event::ActiveItemChanged); self.update_window_edited(cx); if let hash_map::Entry::Occupied(entry) = self.panes_by_item.entry(*item_id) {