diff options
| -rw-r--r-- | river/Layout.zig | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/river/Layout.zig b/river/Layout.zig index 9fe6109..a8fe83b 100644 --- a/river/Layout.zig +++ b/river/Layout.zig @@ -173,13 +173,14 @@ pub fn destroy(self: *Self) void { const node = @fieldParentPtr(std.TailQueue(Self).Node, "data", self); self.output.layouts.remove(node); - // If we are the currently active layout of an output, clean up. The output - // will always end up with no layout at this point, so we directly start the - // transaction. - if (self == self.output.pending.layout) { + // If we are the currently active layout of an output, clean up. + if (self.output.pending.layout == self) { self.output.pending.layout = null; - self.output.arrangeViews(); - server.root.startTransaction(); + if (self.output.layout_demand) |*layout_demand| { + layout_demand.deinit(); + self.output.layout_demand = null; + server.root.notifyLayoutDemandDone(); + } } self.layout.setHandler(?*c_void, handleRequestInert, null, null); |
