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