aboutsummaryrefslogtreecommitdiff
path: root/src/client/shell/mouse.rs
diff options
context:
space:
mode:
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