diff --git a/examples/init b/examples/init index 2d1da04..7226b3c 100755 --- a/examples/init +++ b/examples/init @@ -5,5 +5,5 @@ echo ">>>>> before foot" /usr/bin/foot & -# /usr/bin/foot & +/usr/bin/foot & echo "<<<<< after foot" diff --git a/src/Window.zig b/src/Window.zig index fced985..71b90fe 100644 --- a/src/Window.zig +++ b/src/Window.zig @@ -35,6 +35,15 @@ fn windowListener(river_window_v1: *river.WindowV1, event: river.WindowV1.Event, switch (event) { .closed => { river_window_v1.destroy(); + { + var it = window.context.wm.seats.iterator(.forward); + while (it.next()) |seat| { + if (seat.hovered == window) { + seat.hovered = null; + } + } + } + window.link.remove(); window.context.allocator.destroy(window); }, .dimensions => |ev| { diff --git a/src/WindowManager.zig b/src/WindowManager.zig index 759d5c4..8d1585a 100644 --- a/src/WindowManager.zig +++ b/src/WindowManager.zig @@ -59,10 +59,23 @@ fn windowManagerV1Listener(window_manager_v1: *river.WindowManagerV1, event: riv window_manager_v1.manageFinish(); }, .render_start => { - log.debug("2", .{}); - var it = wm.windows.iterator(.forward); - while (it.next()) |window| { - window.render(); + { + var it = wm.seats.iterator(.forward); + while (it.next()) |seat| { + seat.render(); + } + } + { + var it = wm.outputs.iterator(.forward); + while (it.next()) |output| { + output.render(); + } + } + { + var it = wm.windows.iterator(.forward); + while (it.next()) |window| { + window.render(); + } } window_manager_v1.renderFinish(); },