aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <mail@isaacfreund.com>2023-02-10 13:12:11 +0100
committerIsaac Freund <mail@isaacfreund.com>2023-02-10 13:15:16 +0100
commite1ab51f26071958bbeb2d0c637d3d00eb4326fdf (patch)
tree3f33e801176e51ec3e38ea1b582edabed133bc94
parent919d5d7c621e2c32307f2fad97151f3cb5a37809 (diff)
downloadriver-e1ab51f26071958bbeb2d0c637d3d00eb4326fdf.tar.gz
river-e1ab51f26071958bbeb2d0c637d3d00eb4326fdf.tar.xz
Seat: guard setFocusRaw() usage while locked
Focusing a layer shell or Xwayland override redirect surface while locked is a bug.
-rw-r--r--river/Output.zig2
-rw-r--r--river/XwaylandOverrideRedirect.zig2
2 files changed, 4 insertions, 0 deletions
diff --git a/river/Output.zig b/river/Output.zig
index f994190..b654193 100644
--- a/river/Output.zig
+++ b/river/Output.zig
@@ -293,6 +293,8 @@ pub fn arrangeLayers(self: *Self, target: ArrangeLayersTarget) void {
if (target == .unmapped) return;
+ if (server.lock_manager.state != .unlocked) return;
+
// Find the topmost layer surface in the top or overlay layers which
// requests keyboard interactivity if any.
const topmost_surface = outer: for (layers[0..2]) |layer| {
diff --git a/river/XwaylandOverrideRedirect.zig b/river/XwaylandOverrideRedirect.zig
index 224ad65..ad604ba 100644
--- a/river/XwaylandOverrideRedirect.zig
+++ b/river/XwaylandOverrideRedirect.zig
@@ -101,6 +101,8 @@ pub fn handleMap(listener: *wl.Listener(*wlr.XwaylandSurface), xwayland_surface:
}
pub fn focusIfDesired(self: *Self) void {
+ if (server.lock_manager.state != .unlocked) return;
+
if (self.xwayland_surface.overrideRedirectWantsFocus() and
self.xwayland_surface.icccmInputModel() != .none)
{