summaryrefslogtreecommitdiffstats
path: root/dwm.c
diff options
context:
space:
mode:
Diffstat (limited to 'dwm.c')
-rw-r--r--dwm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/dwm.c b/dwm.c
index 51736fe..11bce9a 100644
--- a/dwm.c
+++ b/dwm.c
@@ -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