Skip to content

Commit

Permalink
Properly deserialize active pane in the workspace (#19744)
Browse files Browse the repository at this point in the history
Without setting the active pane metadata, no center pane events are
emitted on start before the pane is focused manually, which breaks
deserialization of other components like outline panel, which should
show the active pane's active item outlines on start.

Release Notes:

- N/A

Co-authored-by: Thorsten Ball <[email protected]>
  • Loading branch information
SomeoneToIgnore and mrnugget authored Oct 25, 2024
1 parent 6de5ace commit 92ba183
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions crates/workspace/src/workspace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2947,9 +2947,7 @@ impl Workspace {
status_bar.set_active_pane(&pane, cx);
});
if self.active_pane != pane {
self.active_pane = pane.clone();
self.active_item_path_changed(cx);
self.last_active_center_pane = Some(pane.downgrade());
self.set_active_pane(&pane, cx);
}

if self.last_active_center_pane.is_none() {
Expand All @@ -2972,6 +2970,12 @@ impl Workspace {
cx.notify();
}

fn set_active_pane(&mut self, pane: &View<Pane>, cx: &mut ViewContext<Self>) {
self.active_pane = pane.clone();
self.active_item_path_changed(cx);
self.last_active_center_pane = Some(pane.downgrade());
}

fn handle_panel_focused(&mut self, cx: &mut ViewContext<Self>) {
self.update_active_view_for_followers(cx);
}
Expand Down Expand Up @@ -4263,12 +4267,11 @@ impl Workspace {

// Swap workspace center group
workspace.center = PaneGroup::with_root(center_group);
workspace.last_active_center_pane = active_pane.as_ref().map(|p| p.downgrade());
if let Some(active_pane) = active_pane {
workspace.active_pane = active_pane;
workspace.set_active_pane(&active_pane, cx);
cx.focus_self();
} else {
workspace.active_pane = workspace.center.first_pane().clone();
workspace.set_active_pane(&workspace.center.first_pane(), cx);
}
}

Expand Down

0 comments on commit 92ba183

Please sign in to comment.