aboutsummaryrefslogtreecommitdiff
path: root/src/client/shell/mouse.rs
diff options
context:
space:
mode:
authorakbash <akbash@herdr.dev>2026-09-08 17:51:59 +0300
committerGitHub <noreply@github.com>2026-09-08 17:51:59 +0300
commit68c7b78ec237034cbb0e21c8666842ed7991641d (patch)
tree3d5a63866fa785a3307959301f3022fa21bff5ed /src/client/shell/mouse.rs
parentffa0892ef87d927eef78fe8068de4d90201fb20b (diff)
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 <ogulcancelik@gmail.com>
Diffstat (limited to 'src/client/shell/mouse.rs')
-rw-r--r--src/client/shell/mouse.rs26
1 files changed, 14 insertions, 12 deletions
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::<Vec<_>>();
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