Close remote project windows when leaving a call

This commit is contained in:
Max Brunsfeld 2023-03-15 15:19:27 -07:00
parent 385dfe1661
commit b34477458e
3 changed files with 11 additions and 0 deletions

View File

@ -275,6 +275,7 @@ impl Room {
if let Some(project) = project.upgrade(cx) { if let Some(project) = project.upgrade(cx) {
project.update(cx, |project, cx| { project.update(cx, |project, cx| {
project.disconnected_from_host(cx); project.disconnected_from_host(cx);
project.close(cx);
}); });
} }
} }

View File

@ -175,6 +175,7 @@ pub enum Event {
}, },
RemoteIdChanged(Option<u64>), RemoteIdChanged(Option<u64>),
DisconnectedFromHost, DisconnectedFromHost,
Closed,
CollaboratorUpdated { CollaboratorUpdated {
old_peer_id: proto::PeerId, old_peer_id: proto::PeerId,
new_peer_id: proto::PeerId, new_peer_id: proto::PeerId,
@ -1172,6 +1173,10 @@ impl Project {
} }
} }
pub fn close(&mut self, cx: &mut ModelContext<Self>) {
cx.emit(Event::Closed);
}
pub fn is_read_only(&self) -> bool { pub fn is_read_only(&self) -> bool {
match &self.client_state { match &self.client_state {
Some(ProjectClientState::Remote { Some(ProjectClientState::Remote {

View File

@ -598,6 +598,11 @@ impl Workspace {
cx.blur(); cx.blur();
} }
project::Event::Closed => {
let window_id = cx.window_id();
cx.remove_window(window_id);
}
_ => {} _ => {}
} }
cx.notify() cx.notify()