From 68c7b78ec237034cbb0e21c8666842ed7991641d Mon Sep 17 00:00:00 2001 From: akbash Date: Tue, 8 Sep 2026 17:51:59 +0300 Subject: fix: collapse worktree groups with saved machines (#3781) * fix: collapse worktree groups with saved machines refs #3778 * fix: scope worktree collapse by machine refs #3778 * fix: collapse machines without switching focus refs #3778 --------- Co-authored-by: akbash-bot <300245827+akbash-bot@users.noreply.github.com> Co-authored-by: Ogulcan Celik --- src/client/shell/mouse.rs | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'src/client/shell/mouse.rs') diff --git a/src/client/shell/mouse.rs b/src/client/shell/mouse.rs index cd4a6c16..cf04fb89 100644 --- a/src/client/shell/mouse.rs +++ b/src/client/shell/mouse.rs @@ -480,7 +480,11 @@ impl ClientShellState { .map(|hit| (Some(hit.workspace_id.clone()), hit.rect.y.saturating_sub(1))) .collect::>(); let snapshot = self.snapshot.as_deref()?; - let entries = render::workspace_entries(snapshot, &self.collapsed_groups); + let empty_collapsed_groups = HashSet::new(); + let collapsed_groups = self + .collapsed_groups_for_endpoint(&self.active_endpoint_id) + .unwrap_or(&empty_collapsed_groups); + let entries = render::workspace_entries(snapshot, collapsed_groups); let last_hit = self .hits .workspaces @@ -1972,17 +1976,15 @@ impl ClientShellState { self.persist_chrome_preferences(outcome); return; } - for hit in &self.hits.workspaces { - if let Some((rect, key)) = &hit.group_toggle { - if super::contains(*rect, point) { - if !self.collapsed_groups.remove(key) { - self.collapsed_groups.insert(key.clone()); - } - outcome.repaint = true; - self.persist_chrome_preferences(outcome); - return; - } - } + let group_toggle = self.hits.workspaces.iter().find_map(|hit| { + let (rect, key) = hit.group_toggle.as_ref()?; + super::contains(*rect, point).then(|| (hit.endpoint_id.clone(), key.clone())) + }); + if let Some((endpoint_id, key)) = group_toggle { + self.toggle_collapsed_group(&endpoint_id, key); + outcome.repaint = true; + self.persist_chrome_preferences(outcome); + return; } let workspace_press = self .hits -- cgit v1.2.3