Split the borderpx config variable into two parts to allow the border
size to be set differently in the x and y directions.
---
 config.def.h |  5 ++++-
 x.c          | 60 ++++++++++++++++++++++++++--------------------------
 2 files changed, 34 insertions(+), 31 deletions(-)

diff --git a/config.def.h b/config.def.h
index 482901e..161611e 100644
--- a/config.def.h
+++ b/config.def.h
@@ -6,7 +6,10 @@
  * font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
  */
 static char *font = "Liberation 
Mono:pixelsize=12:antialias=true:autohint=true";
-static int borderpx = 2;
+static struct { int x; int y; } borderpx = {
+  .x = 2,
+  .y = 2
+};
 
 /*
  * What program is execed by st depends of these precedence rules:
diff --git a/x.c b/x.c
index 5828a3b..3b7f685 100644
--- a/x.c
+++ b/x.c
@@ -315,7 +315,7 @@ zoomreset(const Arg *arg)
 int
 evcol(XEvent *e)
 {
-       int x = e->xbutton.x - borderpx;
+       int x = e->xbutton.x - borderpx.x;
        LIMIT(x, 0, win.tw - 1);
        return x / win.cw;
 }
@@ -323,7 +323,7 @@ evcol(XEvent *e)
 int
 evrow(XEvent *e)
 {
-       int y = e->xbutton.y - borderpx;
+       int y = e->xbutton.y - borderpx.y;
        LIMIT(y, 0, win.th - 1);
        return y / win.ch;
 }
@@ -674,8 +674,8 @@ cresize(int width, int height)
        if (height != 0)
                win.h = height;
 
-       col = (win.w - 2 * borderpx) / win.cw;
-       row = (win.h - 2 * borderpx) / win.ch;
+       col = (win.w - 2 * borderpx.x) / win.cw;
+       row = (win.h - 2 * borderpx.y) / win.ch;
        col = MAX(1, col);
        row = MAX(1, row);
 
@@ -798,10 +798,10 @@ xhints(void)
        sizeh->width = win.w;
        sizeh->height_inc = win.ch;
        sizeh->width_inc = win.cw;
-       sizeh->base_height = 2 * borderpx;
-       sizeh->base_width = 2 * borderpx;
-       sizeh->min_height = win.ch + 2 * borderpx;
-       sizeh->min_width = win.cw + 2 * borderpx;
+       sizeh->base_height = 2 * borderpx.y;
+       sizeh->base_width = 2 * borderpx.x;
+       sizeh->min_height = win.ch + 2 * borderpx.y;
+       sizeh->min_width = win.cw + 2 * borderpx.x;
        if (xw.isfixed) {
                sizeh->flags |= PMaxSize;
                sizeh->min_width = sizeh->max_width = win.w;
@@ -1062,8 +1062,8 @@ xinit(int cols, int rows)
        xloadcols();
 
        /* adjust fixed window geometry */
-       win.w = 2 * borderpx + cols * win.cw;
-       win.h = 2 * borderpx + rows * win.ch;
+       win.w = 2 * borderpx.x + cols * win.cw;
+       win.h = 2 * borderpx.y + rows * win.ch;
        if (xw.gm & XNegative)
                xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
        if (xw.gm & YNegative)
@@ -1148,7 +1148,7 @@ xinit(int cols, int rows)
 int
 xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int 
x, int y)
 {
-       float winx = borderpx + x * win.cw, winy = borderpx + y * win.ch, xp, 
yp;
+       float winx = borderpx.x + x * win.cw, winy = borderpx.y + y * win.ch, 
xp, yp;
        ushort mode, prevmode = USHRT_MAX;
        Font *font = &dc.font;
        int frcflags = FRC_NORMAL;
@@ -1281,7 +1281,7 @@ void
 xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, 
int y)
 {
        int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1);
-       int winx = borderpx + x * win.cw, winy = borderpx + y * win.ch,
+       int winx = borderpx.x + x * win.cw, winy = borderpx.y + y * win.ch,
            width = charlen * win.cw;
        Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
        XRenderColor colfg, colbg;
@@ -1371,17 +1371,17 @@ xdrawglyphfontspecs(const XftGlyphFontSpec *specs, 
Glyph base, int len, int x, i
 
        /* Intelligent cleaning up of the borders. */
        if (x == 0) {
-               xclear(0, (y == 0)? 0 : winy, borderpx,
+               xclear(0, (y == 0)? 0 : winy, borderpx.y,
                        winy + win.ch +
-                       ((winy + win.ch >= borderpx + win.th)? win.h : 0));
+                       ((winy + win.ch >= borderpx.y + win.th)? win.h : 0));
        }
-       if (winx + width >= borderpx + win.tw) {
+       if (winx + width >= borderpx.x + win.tw) {
                xclear(winx + width, (y == 0)? 0 : winy, win.w,
-                       ((winy + win.ch >= borderpx + win.th)? win.h : (winy + 
win.ch)));
+                       ((winy + win.ch >= borderpx.y + win.th)? win.h : (winy 
+ win.ch)));
        }
        if (y == 0)
-               xclear(winx, 0, winx + width, borderpx);
-       if (winy + win.ch >= borderpx + win.th)
+               xclear(winx, 0, winx + width, borderpx.x);
+       if (winy + win.ch >= borderpx.y + win.th)
                xclear(winx, winy + win.ch, winx + width, win.h);
 
        /* Clean up the region we want to draw to. */
@@ -1474,35 +1474,35 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, 
Glyph og)
                case 3: /* Blinking Underline */
                case 4: /* Steady Underline */
                        XftDrawRect(xw.draw, &drawcol,
-                                       borderpx + cx * win.cw,
-                                       borderpx + (cy + 1) * win.ch - \
+                                       borderpx.x + cx * win.cw,
+                                       borderpx.y + (cy + 1) * win.ch - \
                                                cursorthickness,
                                        win.cw, cursorthickness);
                        break;
                case 5: /* Blinking bar */
                case 6: /* Steady bar */
                        XftDrawRect(xw.draw, &drawcol,
-                                       borderpx + cx * win.cw,
-                                       borderpx + cy * win.ch,
+                                       borderpx.x + cx * win.cw,
+                                       borderpx.y + cy * win.ch,
                                        cursorthickness, win.ch);
                        break;
                }
        } else {
                XftDrawRect(xw.draw, &drawcol,
-                               borderpx + cx * win.cw,
-                               borderpx + cy * win.ch,
+                               borderpx.x + cx * win.cw,
+                               borderpx.y + cy * win.ch,
                                win.cw - 1, 1);
                XftDrawRect(xw.draw, &drawcol,
-                               borderpx + cx * win.cw,
-                               borderpx + cy * win.ch,
+                               borderpx.x + cx * win.cw,
+                               borderpx.y + cy * win.ch,
                                1, win.ch - 1);
                XftDrawRect(xw.draw, &drawcol,
-                               borderpx + (cx + 1) * win.cw - 1,
-                               borderpx + cy * win.ch,
+                               borderpx.x + (cx + 1) * win.cw - 1,
+                               borderpx.y + cy * win.ch,
                                1, win.ch - 1);
                XftDrawRect(xw.draw, &drawcol,
-                               borderpx + cx * win.cw,
-                               borderpx + (cy + 1) * win.ch - 1,
+                               borderpx.x + cx * win.cw,
+                               borderpx.y + (cy + 1) * win.ch - 1,
                                win.cw, 1);
        }
 }
-- 
2.17.1


Reply via email to