aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--river/Seat.zig18
1 files changed, 10 insertions, 8 deletions
diff --git a/river/Seat.zig b/river/Seat.zig
index 0d25860..95a5e3f 100644
--- a/river/Seat.zig
+++ b/river/Seat.zig
@@ -256,6 +256,16 @@ pub fn setFocusRaw(self: *Self, new_focus: FocusTarget) void {
pub fn focusOutput(self: *Self, output: *Output) void {
if (self.focused_output == output) return;
+ var it = self.status_trackers.first;
+ while (it) |node| : (it = node.next) node.data.sendOutput(.unfocused);
+
+ self.focused_output = output;
+
+ it = self.status_trackers.first;
+ while (it) |node| : (it = node.next) node.data.sendOutput(.focused);
+
+ if (self.focused_output == &server.root.noop_output) return;
+
// Warp pointer to center of newly focused output (In layout coordinates),
// but only if cursor is not already on the output and this feature is enabled.
switch (server.config.warp_cursor) {
@@ -272,14 +282,6 @@ pub fn focusOutput(self: *Self, output: *Output) void {
}
},
}
-
- var it = self.status_trackers.first;
- while (it) |node| : (it = node.next) node.data.sendOutput(.unfocused);
-
- self.focused_output = output;
-
- it = self.status_trackers.first;
- while (it) |node| : (it = node.next) node.data.sendOutput(.focused);
}
pub fn handleActivity(self: Self) void {