Xinqi Bao's Git
projects
/
st.git
/ blobdiff
summary
|
log
|
commit
|
diff
|
tree
raw
|
inline
| side by side
patch: anysize
[st.git]
/
x.c
diff --git
a/x.c
b/x.c
index
27e81d1
..
752348f
100644
(file)
--- a/
x.c
+++ b/
x.c
@@
-81,6
+81,7
@@
typedef XftGlyphFontSpec GlyphFontSpec;
typedef struct {
int tw, th; /* tty width and height */
int w, h; /* window width and height */
typedef struct {
int tw, th; /* tty width and height */
int w, h; /* window width and height */
+ int hborderpx, vborderpx;
int ch; /* char height */
int cw; /* char width */
int mode; /* window state/mode flags */
int ch; /* char height */
int cw; /* char width */
int mode; /* window state/mode flags */
@@
-333,7
+334,7
@@
ttysend(const Arg *arg)
int
evcol(XEvent *e)
{
int
evcol(XEvent *e)
{
- int x = e->xbutton.x - borderpx;
+ int x = e->xbutton.x -
win.h
borderpx;
LIMIT(x, 0, win.tw - 1);
return x / win.cw;
}
LIMIT(x, 0, win.tw - 1);
return x / win.cw;
}
@@
-341,7
+342,7
@@
evcol(XEvent *e)
int
evrow(XEvent *e)
{
int
evrow(XEvent *e)
{
- int y = e->xbutton.y - borderpx;
+ int y = e->xbutton.y -
win.v
borderpx;
LIMIT(y, 0, win.th - 1);
return y / win.ch;
}
LIMIT(y, 0, win.th - 1);
return y / win.ch;
}
@@
-741,6
+742,9
@@
cresize(int width, int height)
col = MAX(1, col);
row = MAX(1, row);
col = MAX(1, col);
row = MAX(1, row);
+ win.hborderpx = (win.w - col * win.cw) / 2;
+ win.vborderpx = (win.h - row * win.ch) / 2;
+
tresize(col, row);
xresize(col, row);
ttyresize(win.tw, win.th);
tresize(col, row);
xresize(col, row);
ttyresize(win.tw, win.th);
@@
-878,8
+882,8
@@
xhints(void)
sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize;
sizeh->height = win.h;
sizeh->width = win.w;
sizeh->flags = PSize | PResizeInc | PBaseSize | PMinSize;
sizeh->height = win.h;
sizeh->width = win.w;
- sizeh->height_inc =
win.ch
;
- sizeh->width_inc =
win.cw
;
+ sizeh->height_inc =
1
;
+ sizeh->width_inc =
1
;
sizeh->base_height = 2 * borderpx;
sizeh->base_width = 2 * borderpx;
sizeh->min_height = win.ch + 2 * borderpx;
sizeh->base_height = 2 * borderpx;
sizeh->base_width = 2 * borderpx;
sizeh->min_height = win.ch + 2 * borderpx;
@@
-1173,8
+1177,8
@@
xinit(int cols, int rows)
xloadcols();
/* adjust fixed window geometry */
xloadcols();
/* adjust fixed window geometry */
- win.w = 2 * borderpx + cols * win.cw;
- win.h = 2 * borderpx + rows * win.ch;
+ win.w = 2 *
win.hborderpx + 2 *
borderpx + cols * win.cw;
+ win.h = 2 *
win.vborderpx + 2 *
borderpx + rows * win.ch;
if (xw.gm & XNegative)
xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
if (xw.gm & YNegative)
if (xw.gm & XNegative)
xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
if (xw.gm & YNegative)
@@
-1259,7
+1263,7
@@
xinit(int cols, int rows)
int
xmakeglyphfontspecs(XftGlyphFontSpec *specs, const Glyph *glyphs, int len, int x, int y)
{
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 =
win.hborderpx + x * win.cw, winy = win.v
borderpx + y * win.ch, xp, yp;
ushort mode, prevmode = USHRT_MAX;
Font *font = &dc.font;
int frcflags = FRC_NORMAL;
ushort mode, prevmode = USHRT_MAX;
Font *font = &dc.font;
int frcflags = FRC_NORMAL;
@@
-1392,7
+1396,7
@@
void
xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, int y)
{
int charlen = len * ((base.mode & ATTR_WIDE) ? 2 : 1);
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 =
win.hborderpx + x * win.cw, winy = win.v
borderpx + y * win.ch,
width = charlen * win.cw;
Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
XRenderColor colfg, colbg;
width = charlen * win.cw;
Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
XRenderColor colfg, colbg;
@@
-1482,17
+1486,17
@@
xdrawglyphfontspecs(const XftGlyphFontSpec *specs, Glyph base, int len, int x, i
/* Intelligent cleaning up of the borders. */
if (x == 0) {
/* Intelligent cleaning up of the borders. */
if (x == 0) {
- xclear(0, (y == 0)? 0 : winy, borderpx,
+ xclear(0, (y == 0)? 0 : winy,
win.v
borderpx,
winy + win.ch +
winy + win.ch +
- ((winy + win.ch >= borderpx + win.th)? win.h : 0));
+ ((winy + win.ch >=
win.v
borderpx + win.th)? win.h : 0));
}
}
- if (winx + width >= borderpx + win.tw) {
+ if (winx + width >=
win.h
borderpx + win.tw) {
xclear(winx + width, (y == 0)? 0 : winy, win.w,
xclear(winx + width, (y == 0)? 0 : winy, win.w,
- ((winy + win.ch >= borderpx + win.th)? win.h : (winy + win.ch)));
+ ((winy + win.ch >=
win.v
borderpx + win.th)? win.h : (winy + win.ch)));
}
if (y == 0)
}
if (y == 0)
- xclear(winx, 0, winx + width, borderpx);
- if (winy + win.ch >= borderpx + win.th)
+ xclear(winx, 0, winx + width,
win.v
borderpx);
+ if (winy + win.ch >=
win.v
borderpx + win.th)
xclear(winx, winy + win.ch, winx + width, win.h);
/* Clean up the region we want to draw to. */
xclear(winx, winy + win.ch, winx + width, win.h);
/* Clean up the region we want to draw to. */
@@
-1586,35
+1590,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,
case 3: /* Blinking Underline */
case 4: /* Steady Underline */
XftDrawRect(xw.draw, &drawcol,
- borderpx + cx * win.cw,
- borderpx + (cy + 1) * win.ch - \
+
win.h
borderpx + cx * win.cw,
+
win.v
borderpx + (cy + 1) * win.ch - \
cursorthickness,
win.cw, cursorthickness);
break;
case 5: /* Blinking bar */
case 6: /* Steady bar */
XftDrawRect(xw.draw, &drawcol,
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,
+
win.h
borderpx + cx * win.cw,
+
win.v
borderpx + cy * win.ch,
cursorthickness, win.ch);
break;
}
} else {
XftDrawRect(xw.draw, &drawcol,
cursorthickness, win.ch);
break;
}
} else {
XftDrawRect(xw.draw, &drawcol,
- borderpx + cx * win.cw,
- borderpx + cy * win.ch,
+
win.h
borderpx + cx * win.cw,
+
win.v
borderpx + cy * win.ch,
win.cw - 1, 1);
XftDrawRect(xw.draw, &drawcol,
win.cw - 1, 1);
XftDrawRect(xw.draw, &drawcol,
- borderpx + cx * win.cw,
- borderpx + cy * win.ch,
+
win.h
borderpx + cx * win.cw,
+
win.v
borderpx + cy * win.ch,
1, win.ch - 1);
XftDrawRect(xw.draw, &drawcol,
1, win.ch - 1);
XftDrawRect(xw.draw, &drawcol,
- borderpx + (cx + 1) * win.cw - 1,
- borderpx + cy * win.ch,
+
win.h
borderpx + (cx + 1) * win.cw - 1,
+
win.v
borderpx + cy * win.ch,
1, win.ch - 1);
XftDrawRect(xw.draw, &drawcol,
1, win.ch - 1);
XftDrawRect(xw.draw, &drawcol,
- borderpx + cx * win.cw,
- borderpx + (cy + 1) * win.ch - 1,
+
win.h
borderpx + cx * win.cw,
+
win.v
borderpx + (cy + 1) * win.ch - 1,
win.cw, 1);
}
}
win.cw, 1);
}
}