2zw

2zw - X11 Windowmanager

Files | Log | Commits | Refs | README


d61487e

Author: erikbackman

Date: 2024-02-12

Subject: focus previous window on destroy

Diff

commit d61487e93e576af9718bd29745653ba9e9c7982a
Author: erikbackman <erikbackman@users.noreply.github.com>
Date:   Mon Feb 12 02:09:25 2024 +0100

    focus previous window on destroy

diff --git a/src/main.zig b/src/main.zig
index 5cebbc4..cd790cd 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -180,17 +180,19 @@ fn unmanage(allocator: std.mem.Allocator, node: *L.Node, destroyed: bool) void {
         _ = C.XSetErrorHandler(handleError);
         _ = C.XUngrabServer(display);
     }
-    if (node == cursor) {
-        cursor = node.prev;
-    }
+    if (node == cursor) cursor = node.prev;
+
     list.remove(node);
     allocator.destroy(node);
-    _ = C.XSetInputFocus(
-        display,
-        root,
-        C.RevertToPointerRoot,
-        C.CurrentTime,
-    );
+
+    if (cursor) |c| focus(c) else {
+        _ = C.XSetInputFocus(
+            display,
+            root,
+            C.RevertToPointerRoot,
+            C.CurrentTime,
+        );
+    }
 }
 
 // Event handlers