From dd89355d8078323a32d2ea2555eb3827b6fb5a7f Mon Sep 17 00:00:00 2001 From: Julian Orth Date: Tue, 17 Feb 2026 18:19:12 +0100 Subject: [PATCH] output: don't focus the workspace when clicking on the separator --- src/compositor.rs | 1 + src/tasks/connector.rs | 1 + src/tree/output.rs | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/src/compositor.rs b/src/compositor.rs index 94b63659..d5805b32 100644 --- a/src/compositor.rs +++ b/src/compositor.rs @@ -729,6 +729,7 @@ fn create_dummy_output(state: &Rc) { bar_rect: Default::default(), bar_rect_rel: Default::default(), bar_rect_with_separator: Default::default(), + bar_rect_with_separator_rel: Default::default(), bar_separator_rect: Default::default(), bar_separator_rect_rel: Default::default(), non_exclusive_rect: Default::default(), diff --git a/src/tasks/connector.rs b/src/tasks/connector.rs index 9ecf51be..fe02aaf0 100644 --- a/src/tasks/connector.rs +++ b/src/tasks/connector.rs @@ -234,6 +234,7 @@ impl ConnectorHandler { bar_rect: Default::default(), bar_rect_rel: Default::default(), bar_rect_with_separator: Default::default(), + bar_rect_with_separator_rel: Default::default(), bar_separator_rect: Default::default(), bar_separator_rect_rel: Default::default(), render_data: Default::default(), diff --git a/src/tree/output.rs b/src/tree/output.rs index ac0ee095..ac3cc924 100644 --- a/src/tree/output.rs +++ b/src/tree/output.rs @@ -96,6 +96,7 @@ pub struct OutputNode { pub bar_rect: Cell, pub bar_rect_rel: Cell, pub bar_rect_with_separator: Cell, + pub bar_rect_with_separator_rel: Cell, pub bar_separator_rect: Cell, pub bar_separator_rect_rel: Cell, pub render_data: RefCell, @@ -776,6 +777,7 @@ impl OutputNode { let mut bar_rect = Rect::default(); let mut bar_rect_rel = Rect::default(); let mut bar_rect_with_separator = Rect::default(); + let mut bar_rect_with_separator_rel = Rect::default(); let mut bar_separator_rect = Rect::default(); let mut bar_separator_rect_rel = Rect::default(); let mut workspace_rect = non_exclusive_rect; @@ -800,6 +802,7 @@ impl OutputNode { } let to_rel = |r: Rect| r.move_(-rect.x1(), -rect.y1()); bar_rect_rel = to_rel(bar_rect); + bar_rect_with_separator_rel = to_rel(bar_rect_with_separator); bar_separator_rect_rel = to_rel(bar_separator_rect); workspace_rect_rel = to_rel(workspace_rect); } @@ -808,6 +811,8 @@ impl OutputNode { self.bar_rect.set(bar_rect); self.bar_rect_rel.set(bar_rect_rel); self.bar_rect_with_separator.set(bar_rect_with_separator); + self.bar_rect_with_separator_rel + .set(bar_rect_with_separator_rel); self.bar_separator_rect.set(bar_separator_rect); self.bar_separator_rect_rel.set(bar_separator_rect_rel); self.workspace_rect.set(workspace_rect); @@ -1184,6 +1189,10 @@ impl OutputNode { if self.bar_button(seat, x, y) { return; } + let bar_rect_with_separator_rel = self.bar_rect_with_separator_rel.get(); + if bar_rect_with_separator_rel.contains(x, y) { + return; + } let ws = self.ensure_workspace(); seat.focus_node(ws); }