aboutsummaryrefslogtreecommitdiff
path: root/src/app/api.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/api.rs')
-rw-r--r--src/app/api.rs16
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);