Call ItemHandle::added_to_pane when an item is added to a pane

This commit is contained in:
Antonio Scandurra 2023-05-30 14:46:41 +02:00
parent 88eb2b2163
commit bd494037bb
2 changed files with 17 additions and 12 deletions

View File

@ -117,6 +117,7 @@ pub fn init(cx: &mut AppContext) {
#[derive(Debug)]
pub enum Event {
AddItem { item: Box<dyn ItemHandle> },
ActivateItem { local: bool },
Remove,
RemoveItem { item_id: usize },
@ -497,7 +498,7 @@ impl Pane {
self.activate_item(insertion_index, activate_pane, focus_item, cx);
} else {
self.items.insert(insertion_index, item);
self.items.insert(insertion_index, item.clone());
if insertion_index <= self.active_item_index {
self.active_item_index += 1;
}
@ -505,6 +506,8 @@ impl Pane {
self.activate_item(insertion_index, activate_pane, focus_item, cx);
cx.notify();
}
cx.emit(Event::AddItem { item });
}
pub fn items_len(&self) -> usize {
@ -1704,7 +1707,7 @@ impl NavHistory {
}
.pop_back();
if entry.is_some() {
self.did_update(cx);
state.did_update(cx);
}
entry
}
@ -1760,16 +1763,7 @@ impl NavHistory {
});
}
}
self.did_update(cx);
}
pub fn did_update(&self, cx: &mut WindowContext) {
let state = self.0.borrow();
if let Some(pane) = state.pane.upgrade(cx) {
cx.defer(move |cx| {
pane.update(cx, |pane, cx| pane.history_updated(cx));
});
}
state.did_update(cx);
}
pub fn remove_item(&mut self, item_id: usize) {
@ -1791,6 +1785,16 @@ impl NavHistory {
}
}
impl NavHistoryState {
pub fn did_update(&self, cx: &mut WindowContext) {
if let Some(pane) = self.pane.upgrade(cx) {
cx.defer(move |cx| {
pane.update(cx, |pane, cx| pane.history_updated(cx));
});
}
}
}
pub struct PaneBackdrop<V: View> {
child_view: usize,
child: AnyElement<V>,

View File

@ -1926,6 +1926,7 @@ impl Workspace {
cx: &mut ViewContext<Self>,
) {
match event {
pane::Event::AddItem { item } => item.added_to_pane(self, pane, cx),
pane::Event::Split(direction) => {
self.split_pane(pane, *direction, cx);
}