summaryrefslogtreecommitdiff
path: root/src/sxwm.c
diff options
context:
space:
mode:
authoruint <abhinav.prsai@gmail.com>2025-12-13 15:40:06 +0000
committeruint <abhinav.prsai@gmail.com>2025-12-13 15:40:06 +0000
commit4e6d28d973f5792762cda5823b02296bbeafb9ea (patch)
tree08702824e4ed18ebee928b4c2f5f501e7d53cd2c /src/sxwm.c
parent1763280744b7e30b03098cf889088c86eb5dcbad (diff)
fix closing window returns to mon win not prev win
Diffstat (limited to 'src/sxwm.c')
-rw-r--r--src/sxwm.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/src/sxwm.c b/src/sxwm.c
index 9faddc4..f505b79 100644
--- a/src/sxwm.c
+++ b/src/sxwm.c
@@ -1089,25 +1089,23 @@ void hdl_destroy_ntf(XEvent *xev)
tile();
update_borders();
- /* prefer same monitor */
- Client *newf = NULL;
- for (Client *p = workspaces[i]; p; p = p->next) {
- if (!p->mapped)
- continue;
- if (p->mon == current_mon) {
- newf = p;
+ /* prefer previous window else next */
+ Client *foc_new = NULL;
+ if (prev && prev->mapped && prev->mon == current_mon)
+ foc_new = prev;
+ else {
+ for (Client *p = workspaces[i]; p; p = p->next) {
+ if (!p->mapped || p->mon != current_mon)
+ continue;
+ foc_new = p;
break;
}
- if (!newf)
- newf = p;
}
- if (newf) {
- set_input_focus(newf, True, True);
- }
- else {
+ if (foc_new)
+ set_input_focus(foc_new, True, True);
+ else
set_input_focus(NULL, False, False);
- }
}
return;
@@ -1869,10 +1867,10 @@ void quit(void)
/* Kill all clients on exit...
for (int ws = 0; ws < NUM_WORKSPACES; ws++) {
- for (Client *c = workspaces[ws]; c; c = c->next) {
- XUnmapWindow(dpy, c->win);
- XKillClient(dpy, c->win);
- }
+ for (Client *c = workspaces[ws]; c; c = c->next) {
+ XUnmapWindow(dpy, c->win);
+ XKillClient(dpy, c->win);
+ }
}
*/