1
0
Fork 0
forked from wry/wry

Merge pull request #747 from mahkoh/jorth/click-divider

output: don't focus the workspace when clicking on the separator
This commit is contained in:
mahkoh 2026-02-17 18:23:34 +01:00 committed by GitHub
commit 4ca67772b3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 3 deletions

View file

@ -729,6 +729,7 @@ fn create_dummy_output(state: &Rc<State>) {
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(),

View file

@ -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(),

View file

@ -96,6 +96,7 @@ pub struct OutputNode {
pub bar_rect: Cell<Rect>,
pub bar_rect_rel: Cell<Rect>,
pub bar_rect_with_separator: Cell<Rect>,
pub bar_rect_with_separator_rel: Cell<Rect>,
pub bar_separator_rect: Cell<Rect>,
pub bar_separator_rect_rel: Cell<Rect>,
pub render_data: RefCell<OutputRenderData>,
@ -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;
@ -798,15 +800,19 @@ impl OutputNode {
Rect::new_sized_saturating(x1, y1 + bh + bsw, width, height - bh - bsw);
}
}
bar_rect_rel = bar_rect.move_(-rect.x1(), -rect.y1());
bar_separator_rect_rel = bar_separator_rect.move_(-rect.x1(), -rect.y1());
workspace_rect_rel = workspace_rect.move_(-rect.x1(), -rect.y1());
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);
}
self.non_exclusive_rect.set(non_exclusive_rect);
self.non_exclusive_rect_rel.set(non_exclusive_rect_rel);
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);
@ -1183,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);
}