diff options
Diffstat (limited to 'dwm.c')
-rw-r--r-- | dwm.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -202,6 +202,7 @@ static void pushdown(const Arg *arg); static void pushup(const Arg *arg); static void quit(const Arg *arg); static Monitor *recttomon(int x, int y, int w, int h); +static void resetlayout(const Arg *arg); static void resize(Client *c, int x, int y, int w, int h, int interact); static void resizeclient(Client *c, int x, int y, int w, int h); static void resizemouse(const Arg *arg); @@ -1491,6 +1492,18 @@ recttomon(int x, int y, int w, int h) } void +resetlayout(const Arg *arg) +{ + Arg default_layout = {.v = &layouts[0]}; + Arg default_mfact = {.f = mfact + 1}; + Arg default_nmaster = {.i = nmaster - selmon->nmaster}; + + setlayout(&default_layout); + setmfact(&default_mfact); + incnmaster(&default_nmaster); +} + +void resize(Client *c, int x, int y, int w, int h, int interact) { if (applysizehints(c, &x, &y, &w, &h, interact)) @@ -2062,6 +2075,9 @@ unmanage(Client *c, int destroyed) focus(NULL); updateclientlist(); arrange(m); + + if (nexttiled(m->clients) == NULL) + resetlayout(NULL); } void |