From bae826ef0e4b43b6e5f7b85ed910b71fa0b7544a Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Thu, 29 Jul 2021 13:42:36 +0200 Subject: [PATCH] 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 => {}, }