diff --git a/crates/debugger_ui/src/debugger_panel.rs b/crates/debugger_ui/src/debugger_panel.rs index 9cec74d27e1bacb1ecd34bd96312127d2d7f8022..336783212f101c048ea0693edbb01a0a2089fbbd 100644 --- a/crates/debugger_ui/src/debugger_panel.rs +++ b/crates/debugger_ui/src/debugger_panel.rs @@ -438,7 +438,13 @@ impl DebugPanel { else { return; }; - + session.update(cx, |this, cx| { + if let Some(running) = this.mode().as_running() { + running.update(cx, |this, cx| { + this.serialize_layout(window, cx); + }); + } + }); let session_id = session.update(cx, |this, cx| this.session_id(cx)); let should_prompt = self .project diff --git a/crates/debugger_ui/src/session/running.rs b/crates/debugger_ui/src/session/running.rs index d948ba300915194d9055a981cc30eaccf518f9d6..80ce42d2d603c10470718256e86cbf57f0183185 100644 --- a/crates/debugger_ui/src/session/running.rs +++ b/crates/debugger_ui/src/session/running.rs @@ -421,6 +421,9 @@ impl RunningState { } cx.notify() }), + cx.on_focus_out(&focus_handle, window, |this, _, window, cx| { + this.serialize_layout(window, cx); + }), ]; let mut pane_close_subscriptions = HashMap::default(); @@ -476,7 +479,7 @@ impl RunningState { } } - fn serialize_layout(&mut self, window: &mut Window, cx: &mut Context) { + pub(crate) fn serialize_layout(&mut self, window: &mut Window, cx: &mut Context) { if self._schedule_serialize.is_none() { self._schedule_serialize = Some(cx.spawn_in(window, async move |this, cx| { cx.background_executor()