diff options
Diffstat (limited to 'src/app/api.rs')
| -rw-r--r-- | src/app/api.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/app/api.rs b/src/app/api.rs index d2c2858f..7bc8edf1 100644 --- a/src/app/api.rs +++ b/src/app/api.rs @@ -151,6 +151,15 @@ impl App { } if let AppEvent::PaneDied { pane_id } = &ev { + if self + .state + .popup_pane + .as_ref() + .is_some_and(|popup| popup.pane_id == *pane_id) + { + self.close_popup_pane(); + return; + } let previous_toast = self.state.toast.clone(); if let Some(update) = self.state.publish_pane_process_exit_if_agent(*pane_id) { self.sync_full_lifecycle_authority_detection_pauses(); @@ -1059,6 +1068,13 @@ impl App { return self.handle_pane_send_input(request.id, params) } Method::PaneClose(target) => return self.handle_pane_close(request.id, target), + Method::PopupClose(_) => { + return if self.close_popup_pane() { + responses::encode_success(request.id, ResponseResult::Ok {}) + } else { + responses::encode_error(request.id, "popup_not_open", "no popup is open") + }; + } Method::PaneSendKeys(params) => return self.handle_pane_send_keys(request.id, params), Method::IntegrationInstall(params) => { return self.handle_integration_install(request.id, params); |
