Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
cursor: fix crash if focus-follows-cursor is set
Currently we hit a stack overflow as we do not check if the target view
already has keyboard focus before calling Seat.focus() in
Cursor.passthrough(). To fix this, simply add this check.
river/Cursor.zig | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/river/Cursor.zig b/river/Cursor.zig
index 06fd452..0fca04a 100644
--- a/river/Cursor.zig
+++ b/river/Cursor.zig
@@ -826,9 +826,11 @@ fn passthrough(self: *Self, time: u32) void {
if (follow_mode == .strict or (follow_mode == .normal and focus_change)) {
switch (result.parent) {
.view => |view| {
- self.seat.focusOutput(view.output);
- self.seat.focus(view);
- server.root.startTransaction();
+ if (self.seat.focused != .view or self.seat.focused.view != view) {
+ self.seat.focusOutput(view.output);
+ self.seat.focus(view);
+ server.root.startTransaction();
+ }
},
.layer_surface => {},
}