diff --git a/src/LayerSurface.zig b/src/LayerSurface.zig index 7c03008..f31b6f5 100644 --- a/src/LayerSurface.zig +++ b/src/LayerSurface.zig @@ -113,6 +113,12 @@ fn handleMap( fn handleUnmap(listener: *wl.Listener(void)) void { const layer_surface: *LayerSurface = @fieldParentPtr("unmap", listener); + if (server.seat.focused_surface) |fs| { + if (fs == .layer_surface and fs.layer_surface == layer_surface) { + server.seat.focusSurface(null); + } + } + // FIXME: this crashes mez when killing mez layer_surface.output.arrangeLayers(); diff --git a/src/View.zig b/src/View.zig index 553f3c8..2320848 100644 --- a/src/View.zig +++ b/src/View.zig @@ -166,6 +166,12 @@ fn handleUnmap(listener: *wl.Listener(void)) void { view.mapped = false; // we do this before any work is done so that nobody tries // any funny business + if (server.seat.focused_surface) |fs| { + if (fs == .view and fs.view == view) { + server.seat.focusSurface(null); + } + } + view.request_fullscreen.link.remove(); view.request_move.link.remove(); view.request_resize.link.remove();