@@ -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<platform::test::Window> {
- RefMut::map(self.cx.borrow_mut(), |state| {
+ fn window_mut(&self, window_id: usize) -> std::cell::RefMut<platform::test::Window> {
+ std::cell::RefMut::map(self.cx.borrow_mut(), |state| {
let (_, window) = state
.presenters_and_platform_windows
.get_mut(&window_id)
@@ -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);
@@ -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);
@@ -462,7 +462,10 @@ mod tests {
.downcast::<Editor>()
.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();