diff options
Diffstat (limited to 'src/app/api/plugins/panes.rs')
| -rw-r--r-- | src/app/api/plugins/panes.rs | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/src/app/api/plugins/panes.rs b/src/app/api/plugins/panes.rs index 5a935a8c..b2988998 100644 --- a/src/app/api/plugins/panes.rs +++ b/src/app/api/plugins/panes.rs @@ -27,7 +27,19 @@ impl App { Ok(result) => result, Err(err) => return encode_error(id, "plugin_pane_open_failed", err.to_string()), }; - self.finish_plugin_pane_open(id, ws_idx, None, new_pane, plugin.plugin_id.clone(), pane) + let layout_tab_idx = self + .overlay_panes + .get(&new_pane.pane_id) + .map(|overlay| overlay.tab_idx); + self.finish_plugin_pane_open( + id, + ws_idx, + None, + layout_tab_idx, + new_pane, + plugin.plugin_id.clone(), + pane, + ) } pub(super) fn open_plugin_split_pane( @@ -110,7 +122,15 @@ impl App { tab.zoomed = true; } } - self.finish_plugin_pane_open(id, ws_idx, None, new_pane, plugin.plugin_id.clone(), pane) + self.finish_plugin_pane_open( + id, + ws_idx, + None, + Some(tab_idx), + new_pane, + plugin.plugin_id.clone(), + pane, + ) } pub(super) fn open_plugin_tab( @@ -167,6 +187,7 @@ impl App { id, ws_idx, Some(tab_idx), + Some(tab_idx), new_pane, plugin.plugin_id.clone(), pane, @@ -212,6 +233,7 @@ impl App { id: String, ws_idx: usize, created_tab_idx: Option<usize>, + layout_tab_idx: Option<usize>, new_pane: crate::workspace::NewPane, plugin_id: String, pane_manifest: PluginManifestPane, @@ -248,6 +270,9 @@ impl App { event: crate::api::schema::EventKind::PaneCreated, data: crate::api::schema::EventData::PaneCreated { pane: pane.clone() }, }); + if let Some(tab_idx) = layout_tab_idx { + self.emit_layout_updated_event(ws_idx, tab_idx); + } encode_success( id, ResponseResult::PluginPaneOpened { |
