diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index 245ee0da1ed9895944aa022d945419df951e253f..5fa55448084368dc1f7b99fe119afaf645ff4f5d 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -22,7 +22,7 @@ use smallvec::SmallVec; use smol::prelude::*; use std::{ any::{type_name, Any, TypeId}, - cell::{RefCell, RefMut}, + cell::RefCell, collections::{hash_map::Entry, BTreeMap, HashMap, HashSet, VecDeque}, fmt::{self, Debug}, hash::{Hash, Hasher}, @@ -567,8 +567,8 @@ impl TestAppContext { .assert_dropped(handle.id()) } - fn window_mut(&self, window_id: usize) -> RefMut { - RefMut::map(self.cx.borrow_mut(), |state| { + fn window_mut(&self, window_id: usize) -> std::cell::RefMut { + std::cell::RefMut::map(self.cx.borrow_mut(), |state| { let (_, window) = state .presenters_and_platform_windows .get_mut(&window_id) diff --git a/crates/workspace/src/pane.rs b/crates/workspace/src/pane.rs index f790912c5cf87747b856d300cacd0832660cc53d..09051d726629cb348590d178f3e5fc38d81c7953 100644 --- a/crates/workspace/src/pane.rs +++ b/crates/workspace/src/pane.rs @@ -110,6 +110,7 @@ pub enum Event { Activate, ActivateItem { local: bool }, Remove, + RemoveItem, Split(SplitDirection), ChangeItemTitle, } @@ -575,6 +576,7 @@ impl Pane { } let item = pane.items.remove(item_ix); + cx.emit(Event::RemoveItem); if pane.items.is_empty() { item.deactivated(cx); pane.update_toolbar(cx); diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 0a7c0c1e82c4a5ec2890e0b5bc24f24d1563d78a..942e9a091a14f56fee3cb443070f6a604cf2f1d2 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -1482,6 +1482,9 @@ impl Workspace { } self.update_window_edited(cx); } + pane::Event::RemoveItem => { + self.update_window_edited(cx); + } } } else { error!("pane {} not found", pane_id); diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 0f869d5b5b0c7482f11095991a29e6b880de46ce..0f5e561b04459af6583ca40f76680d887fd042a5 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -462,7 +462,10 @@ mod tests { .downcast::() .unwrap() }); + assert!(!cx.is_window_edited(workspace.window_id())); + editor.update(cx, |editor, cx| editor.insert("EDIT", cx)); + assert!(cx.is_window_edited(workspace.window_id())); assert!(!cx.simulate_window_close(workspace.window_id())); executor.run_until_parked();