aboutsummaryrefslogtreecommitdiff
path: root/src/layer_surface.zig
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-04-19 15:15:50 +0200
committerIsaac Freund <ifreund@ifreund.xyz>2020-04-19 15:15:50 +0200
commit472e2b2624d9fe3b92f2139fbd53771f4e9709b3 (patch)
tree997c21236bfcf254eabe5edfa812e317c7a51649 /src/layer_surface.zig
parenta0c30de132a71bb90b2e90607a1fe0a78fd44322 (diff)
downloadriver-472e2b2624d9fe3b92f2139fbd53771f4e9709b3.tar.gz
river-472e2b2624d9fe3b92f2139fbd53771f4e9709b3.tar.xz
Fix layer sufaces holding focus after unmap
Diffstat (limited to 'src/layer_surface.zig')
-rw-r--r--src/layer_surface.zig10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/layer_surface.zig b/src/layer_surface.zig
index 0ad76c9..650fdb2 100644
--- a/src/layer_surface.zig
+++ b/src/layer_surface.zig
@@ -117,7 +117,17 @@ pub const LayerSurface = struct {
}
}
+ // This gives exclusive focus to a keyboard interactive top or overlay layer
+ // surface if there is one.
layer_surface.output.arrangeLayers();
+
+ // Ensure that focus is given to the appropriate view if there is no
+ // other top/overlay layer surface to grab focus.
+ it = layer_surface.output.root.server.input_manager.seats.first;
+ while (it) |node| : (it = node.next) {
+ const seat = &node.data;
+ seat.focus(null);
+ }
}
fn handleCommit(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {