about summary refs log tree commit diff
path: root/dwm.c
diff options
context:
space:
mode:
authorManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-06-09 18:06:32 +0200
committerManuel Palenzuela <manuelpalenzuelamerino@gmail.com>2019-06-09 18:06:32 +0200
commit35dce4f557389ee67e43351b3b448f48267ae08a (patch)
treef9e536a5c3d4782f3f12da18360d976748efbaf6 /dwm.c
parentAdded gaps 1/2 [Patch] (diff)
downloaddwm-35dce4f557389ee67e43351b3b448f48267ae08a.tar.gz
dwm-35dce4f557389ee67e43351b3b448f48267ae08a.tar.bz2
dwm-35dce4f557389ee67e43351b3b448f48267ae08a.zip
Added gaps 1/2 [Patch]
Diffstat (limited to 'dwm.c')
-rw-r--r--dwm.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/dwm.c b/dwm.c
index ca11e89..0472c4e 100644
--- a/dwm.c
+++ b/dwm.c
@@ -52,8 +52,8 @@
 #define ISVISIBLE(C)            ((C->tags & C->mon->tagset[C->mon->seltags]))
 #define LENGTH(X)               (sizeof X / sizeof X[0])
 #define MOUSEMASK               (BUTTONMASK|PointerMotionMask)
-#define WIDTH(X)                ((X)->w + 2 * (X)->bw)
-#define HEIGHT(X)               ((X)->h + 2 * (X)->bw)
+#define WIDTH(X)                ((X)->w + 2 * (X)->bw + gappx)
+#define HEIGHT(X)               ((X)->h + 2 * (X)->bw + gappx)
 #define TAGMASK                 ((1 << LENGTH(tags)) - 1)
 #define TEXTW(X)                (drw_fontset_getwidth(drw, (X)) + lrpad)
 
@@ -1237,12 +1237,36 @@ void
 resizeclient(Client *c, int x, int y, int w, int h)
 {
 	XWindowChanges wc;
+  unsigned int n;
+  unsigned int gapoffset;
+  unsigned int gapincr;
+  Client *nbc;
 
-	c->oldx = c->x; c->x = wc.x = x;
-	c->oldy = c->y; c->y = wc.y = y;
-	c->oldw = c->w; c->w = wc.width = w;
-	c->oldh = c->h; c->h = wc.height = h;
 	wc.border_width = c->bw;
+
+  /* Get number of clients for the selected monitor */
+  for (n = 0, nbc = nexttiled(selmon->clients); nbc; nbc = nexttiled(nbc->next), n++);
+
+  /* Do nothing if layout is floating */
+  if (c->isfloating || selmon->lt[selmon->sellt]->arrange == NULL) {
+  	gapincr = gapoffset = 0;
+  } else {
+  	/* Remove border and gap if layout is monocle or only one client */
+  	if (selmon->lt[selmon->sellt]->arrange == monocle || n == 1) {
+  		gapoffset = 0;
+  		gapincr = -2 * borderpx;
+  		wc.border_width = 0;
+  	} else {
+  		gapoffset = gappx;
+  		gapincr = 2 * gappx;
+  	}
+  }
+
+  c->oldx = c->x; c->x = wc.x = x + gapoffset;
+  c->oldy = c->y; c->y = wc.y = y + gapoffset;
+  c->oldw = c->w; c->w = wc.width = w - gapincr;
+  c->oldh = c->h; c->h = wc.height = h - gapincr;
+
 	XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
 	configure(c);
 	XSync(dpy, False);