Add ST anysize patch
This commit is contained in:
@@ -1,120 +0,0 @@
|
|||||||
/* See LICENSE file for copyright and license details. */
|
|
||||||
|
|
||||||
#include "exitdwm.c"
|
|
||||||
|
|
||||||
/* appearance */
|
|
||||||
static const unsigned int borderpx = 4; /* border pixel of windows */
|
|
||||||
static const unsigned int snap = 32; /* snap pixel */
|
|
||||||
static const unsigned int systraypinning = 0; /* 0: sloppy systray follows selected monitor, >0: pin systray to monitor X */
|
|
||||||
static const unsigned int systrayonleft = 1; /* 0: systray in the right corner, >0: systray on left of status text */
|
|
||||||
static const unsigned int systrayspacing = 2; /* systray spacing */
|
|
||||||
static const int systraypinningfailfirst = 1; /* 1: if pinning fails, display systray on the first monitor, False: display systray on the last monitor*/
|
|
||||||
static const int showsystray = 1; /* 0 means no systray */
|
|
||||||
static const int showbar = 1; /* 0 means no bar */
|
|
||||||
static const int topbar = 1; /* 0 means bottom bar */
|
|
||||||
static const char *fonts[] = { "JetBrainsMono NF:size=20" };
|
|
||||||
static const char *colors[][3] = {
|
|
||||||
/* fg bg border */
|
|
||||||
[SchemeNorm] = { "#ebdbb2", "#282828", "#1d2021" },
|
|
||||||
[SchemeSel] = { "#282828", "#ebdbb2", "#ebdbb2" },
|
|
||||||
};
|
|
||||||
|
|
||||||
/* tagging */
|
|
||||||
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
|
||||||
|
|
||||||
static const Rule rules[] = {
|
|
||||||
/* xprop(1):
|
|
||||||
* WM_CLASS(STRING) = instance, class
|
|
||||||
* WM_NAME(STRING) = title
|
|
||||||
*/
|
|
||||||
/* class instance title tags mask isfloating CenterThisWindow? monitor */
|
|
||||||
{ "st", NULL, NULL, 0, 0, 1, -1 },
|
|
||||||
{ "Gimp", NULL, NULL, 0, 1, 0, -1 },
|
|
||||||
{ "Firefox", NULL, NULL, 1 << 8, 0, 0, -1 },
|
|
||||||
};
|
|
||||||
|
|
||||||
/* layout(s) */
|
|
||||||
static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
|
|
||||||
static const int nmaster = 1; /* number of clients in master area */
|
|
||||||
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
|
|
||||||
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
|
|
||||||
|
|
||||||
static const Layout layouts[] = {
|
|
||||||
/* symbol arrange function */
|
|
||||||
{ "[]=", tile }, /* first entry is default */
|
|
||||||
{ "><>", NULL }, /* no layout function means floating behavior */
|
|
||||||
{ "[M]", monocle },
|
|
||||||
};
|
|
||||||
|
|
||||||
/* key definitions */
|
|
||||||
#define MODKEY Mod1Mask
|
|
||||||
#define TAGKEYS(KEY,TAG) \
|
|
||||||
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
|
||||||
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
|
||||||
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
|
||||||
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
|
|
||||||
|
|
||||||
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
|
||||||
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
|
||||||
|
|
||||||
/* commands */
|
|
||||||
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
|
||||||
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, NULL };
|
|
||||||
static const char *termcmd[] = { "st", NULL };
|
|
||||||
static const char *slockcmd[] = { "slock", NULL };
|
|
||||||
|
|
||||||
static const Key keys[] = {
|
|
||||||
/* modifier key function argument */
|
|
||||||
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
|
|
||||||
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
|
||||||
{ MODKEY|ShiftMask, XK_l, spawn, {.v = slockcmd } },
|
|
||||||
{ MODKEY, XK_b, togglebar, {0} },
|
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
|
||||||
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
|
||||||
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
|
|
||||||
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
|
|
||||||
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
|
||||||
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
|
|
||||||
{ MODKEY, XK_Return, zoom, {0} },
|
|
||||||
{ MODKEY, XK_Tab, view, {0} },
|
|
||||||
{ MODKEY|ShiftMask, XK_c, killclient, {0} },
|
|
||||||
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
|
|
||||||
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
|
|
||||||
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
|
|
||||||
{ MODKEY, XK_space, setlayout, {0} },
|
|
||||||
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
|
||||||
{ MODKEY, XK_0, view, {.ui = ~0 } },
|
|
||||||
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
|
||||||
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
|
||||||
{ MODKEY, XK_period, focusmon, {.i = +1 } },
|
|
||||||
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
|
|
||||||
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
|
|
||||||
TAGKEYS( XK_1, 0)
|
|
||||||
TAGKEYS( XK_2, 1)
|
|
||||||
TAGKEYS( XK_3, 2)
|
|
||||||
TAGKEYS( XK_4, 3)
|
|
||||||
TAGKEYS( XK_5, 4)
|
|
||||||
TAGKEYS( XK_6, 5)
|
|
||||||
TAGKEYS( XK_7, 6)
|
|
||||||
TAGKEYS( XK_8, 7)
|
|
||||||
TAGKEYS( XK_9, 8)
|
|
||||||
{ MODKEY|ShiftMask, XK_e, exitdwm, {0} },
|
|
||||||
};
|
|
||||||
|
|
||||||
/* button definitions */
|
|
||||||
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
|
|
||||||
static const Button buttons[] = {
|
|
||||||
/* click event mask button function argument */
|
|
||||||
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
|
|
||||||
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
|
|
||||||
{ ClkWinTitle, 0, Button2, zoom, {0} },
|
|
||||||
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
|
|
||||||
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
|
|
||||||
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
|
|
||||||
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
|
||||||
{ ClkTagBar, 0, Button1, view, {0} },
|
|
||||||
{ ClkTagBar, 0, Button3, toggleview, {0} },
|
|
||||||
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
|
||||||
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -147,12 +147,6 @@ static unsigned int defaultrcs = 257;
|
|||||||
*/
|
*/
|
||||||
static unsigned int cursorshape = 2;
|
static unsigned int cursorshape = 2;
|
||||||
|
|
||||||
/*
|
|
||||||
* Whether to use pixel geometry or cell geometry
|
|
||||||
*/
|
|
||||||
|
|
||||||
static Geometry geometry = CellGeometry;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default columns and rows numbers
|
* Default columns and rows numbers
|
||||||
*/
|
*/
|
||||||
@@ -160,13 +154,6 @@ static Geometry geometry = CellGeometry;
|
|||||||
static unsigned int cols = 80;
|
static unsigned int cols = 80;
|
||||||
static unsigned int rows = 24;
|
static unsigned int rows = 24;
|
||||||
|
|
||||||
/*
|
|
||||||
* Default width and height (including borders!)
|
|
||||||
*/
|
|
||||||
|
|
||||||
static unsigned int width = 564;
|
|
||||||
static unsigned int height = 364;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default colour and shape of the mouse cursor
|
* Default colour and shape of the mouse cursor
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -147,12 +147,6 @@ static unsigned int defaultrcs = 257;
|
|||||||
*/
|
*/
|
||||||
static unsigned int cursorshape = 2;
|
static unsigned int cursorshape = 2;
|
||||||
|
|
||||||
/*
|
|
||||||
* Whether to use pixel geometry or cell geometry
|
|
||||||
*/
|
|
||||||
|
|
||||||
static Geometry geometry = CellGeometry;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default columns and rows numbers
|
* Default columns and rows numbers
|
||||||
*/
|
*/
|
||||||
@@ -160,13 +154,6 @@ static Geometry geometry = CellGeometry;
|
|||||||
static unsigned int cols = 80;
|
static unsigned int cols = 80;
|
||||||
static unsigned int rows = 24;
|
static unsigned int rows = 24;
|
||||||
|
|
||||||
/*
|
|
||||||
* Default width and height (including borders!)
|
|
||||||
*/
|
|
||||||
|
|
||||||
static unsigned int width = 564;
|
|
||||||
static unsigned int height = 364;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default colour and shape of the mouse cursor
|
* Default colour and shape of the mouse cursor
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,123 +0,0 @@
|
|||||||
From 6a5a862569912e34febe2dbd5244062013840204 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
|
|
||||||
<soy.jmi2k@gmail.com>
|
|
||||||
Date: Thu, 13 Aug 2020 11:02:01 +0000
|
|
||||||
Subject: [PATCH] add -G to set pixel-based geometry
|
|
||||||
|
|
||||||
---
|
|
||||||
config.def.h | 13 +++++++++++++
|
|
||||||
x.c | 36 ++++++++++++++++++++++++++++++++----
|
|
||||||
2 files changed, 45 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/config.def.h b/config.def.h
|
|
||||||
index 6f05dce..bea316a 100644
|
|
||||||
--- a/config.def.h
|
|
||||||
+++ b/config.def.h
|
|
||||||
@@ -141,6 +141,12 @@ static unsigned int defaultrcs = 257;
|
|
||||||
*/
|
|
||||||
static unsigned int cursorshape = 2;
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Whether to use pixel geometry or cell geometry
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+static Geometry geometry = CellGeometry;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Default columns and rows numbers
|
|
||||||
*/
|
|
||||||
@@ -148,6 +154,13 @@ static unsigned int cursorshape = 2;
|
|
||||||
static unsigned int cols = 80;
|
|
||||||
static unsigned int rows = 24;
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * Default width and height (including borders!)
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+static unsigned int width = 564;
|
|
||||||
+static unsigned int height = 364;
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Default colour and shape of the mouse cursor
|
|
||||||
*/
|
|
||||||
diff --git a/x.c b/x.c
|
|
||||||
index 210f184..29e35d0 100644
|
|
||||||
--- a/x.c
|
|
||||||
+++ b/x.c
|
|
||||||
@@ -45,6 +45,11 @@ typedef struct {
|
|
||||||
signed char appcursor; /* application cursor */
|
|
||||||
} Key;
|
|
||||||
|
|
||||||
+typedef enum {
|
|
||||||
+ PixelGeometry,
|
|
||||||
+ CellGeometry
|
|
||||||
+} Geometry;
|
|
||||||
+
|
|
||||||
/* X modifiers */
|
|
||||||
#define XK_ANY_MOD UINT_MAX
|
|
||||||
#define XK_NO_MOD 0
|
|
||||||
@@ -1096,7 +1101,7 @@ xicdestroy(XIC xim, XPointer client, XPointer call)
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
-xinit(int cols, int rows)
|
|
||||||
+xinit(int w, int h)
|
|
||||||
{
|
|
||||||
XGCValues gcvalues;
|
|
||||||
Cursor cursor;
|
|
||||||
@@ -1121,8 +1126,16 @@ xinit(int cols, int rows)
|
|
||||||
xloadcols();
|
|
||||||
|
|
||||||
/* adjust fixed window geometry */
|
|
||||||
- win.w = 2 * borderpx + cols * win.cw;
|
|
||||||
- win.h = 2 * borderpx + rows * win.ch;
|
|
||||||
+ switch (geometry) {
|
|
||||||
+ case CellGeometry:
|
|
||||||
+ win.w = 2 * borderpx + w * win.cw;
|
|
||||||
+ win.h = 2 * borderpx + h * win.ch;
|
|
||||||
+ break;
|
|
||||||
+ case PixelGeometry:
|
|
||||||
+ win.w = w;
|
|
||||||
+ win.h = h;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
if (xw.gm & XNegative)
|
|
||||||
xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
|
|
||||||
if (xw.gm & YNegative)
|
|
||||||
@@ -2001,6 +2014,12 @@ main(int argc, char *argv[])
|
|
||||||
case 'g':
|
|
||||||
xw.gm = XParseGeometry(EARGF(usage()),
|
|
||||||
&xw.l, &xw.t, &cols, &rows);
|
|
||||||
+ geometry = CellGeometry;
|
|
||||||
+ break;
|
|
||||||
+ case 'G':
|
|
||||||
+ xw.gm = XParseGeometry(EARGF(usage()),
|
|
||||||
+ &xw.l, &xw.t, &width, &height);
|
|
||||||
+ geometry = PixelGeometry;
|
|
||||||
break;
|
|
||||||
case 'i':
|
|
||||||
xw.isfixed = 1;
|
|
||||||
@@ -2037,10 +2056,19 @@ run:
|
|
||||||
|
|
||||||
setlocale(LC_CTYPE, "");
|
|
||||||
XSetLocaleModifiers("");
|
|
||||||
+ switch (geometry) {
|
|
||||||
+ case CellGeometry:
|
|
||||||
+ xinit(cols, rows);
|
|
||||||
+ break;
|
|
||||||
+ case PixelGeometry:
|
|
||||||
+ xinit(width, height);
|
|
||||||
+ cols = (win.w - 2 * borderpx) / win.cw;
|
|
||||||
+ rows = (win.h - 2 * borderpx) / win.ch;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
cols = MAX(cols, 1);
|
|
||||||
rows = MAX(rows, 1);
|
|
||||||
tnew(cols, rows);
|
|
||||||
- xinit(cols, rows);
|
|
||||||
xsetenv();
|
|
||||||
selinit();
|
|
||||||
run();
|
|
||||||
--
|
|
||||||
2.28.0
|
|
||||||
|
|
||||||
164
suckless/st/patches/st-anysize-20220718-baa9357.diff
Normal file
164
suckless/st/patches/st-anysize-20220718-baa9357.diff
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
From 8dcdc4b21a73268e167d98aa30f24315c7f3b7ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: Bakkeby <bakkeby@gmail.com>
|
||||||
|
Date: Mon, 18 Jul 2022 16:52:03 +0200
|
||||||
|
Subject: [PATCH] Adding anysize patch
|
||||||
|
|
||||||
|
---
|
||||||
|
x.c | 56 ++++++++++++++++++++++++++++++--------------------------
|
||||||
|
1 file changed, 30 insertions(+), 26 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/x.c b/x.c
|
||||||
|
index 2a3bd38..f534347 100644
|
||||||
|
--- 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 */
|
||||||
|
+ int hborderpx, vborderpx;
|
||||||
|
int ch; /* char height */
|
||||||
|
int cw; /* char width */
|
||||||
|
int mode; /* window state/mode flags */
|
||||||
|
@@ -331,7 +332,7 @@ ttysend(const Arg *arg)
|
||||||
|
int
|
||||||
|
evcol(XEvent *e)
|
||||||
|
{
|
||||||
|
- int x = e->xbutton.x - borderpx;
|
||||||
|
+ int x = e->xbutton.x - win.hborderpx;
|
||||||
|
LIMIT(x, 0, win.tw - 1);
|
||||||
|
return x / win.cw;
|
||||||
|
}
|
||||||
|
@@ -339,7 +340,7 @@ evcol(XEvent *e)
|
||||||
|
int
|
||||||
|
evrow(XEvent *e)
|
||||||
|
{
|
||||||
|
- int y = e->xbutton.y - borderpx;
|
||||||
|
+ int y = e->xbutton.y - win.vborderpx;
|
||||||
|
LIMIT(y, 0, win.th - 1);
|
||||||
|
return y / win.ch;
|
||||||
|
}
|
||||||
|
@@ -739,6 +740,9 @@ cresize(int width, int height)
|
||||||
|
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);
|
||||||
|
@@ -869,8 +873,8 @@ xhints(void)
|
||||||
|
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;
|
||||||
|
@@ -1152,8 +1156,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 * 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)
|
||||||
|
@@ -1242,7 +1246,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 = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch, xp, yp;
|
||||||
|
ushort mode, prevmode = USHRT_MAX;
|
||||||
|
Font *font = &dc.font;
|
||||||
|
int frcflags = FRC_NORMAL;
|
||||||
|
@@ -1375,7 +1379,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 = win.hborderpx + x * win.cw, winy = win.vborderpx + y * win.ch,
|
||||||
|
width = charlen * win.cw;
|
||||||
|
Color *fg, *bg, *temp, revfg, revbg, truefg, truebg;
|
||||||
|
XRenderColor colfg, colbg;
|
||||||
|
@@ -1465,17 +1469,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, win.hborderpx,
|
||||||
|
winy + win.ch +
|
||||||
|
- ((winy + win.ch >= borderpx + win.th)? win.h : 0));
|
||||||
|
+ ((winy + win.ch >= win.vborderpx + win.th)? win.h : 0));
|
||||||
|
}
|
||||||
|
- if (winx + width >= borderpx + win.tw) {
|
||||||
|
+ if (winx + width >= win.hborderpx + 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 >= win.vborderpx + 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, win.vborderpx);
|
||||||
|
+ if (winy + win.ch >= win.vborderpx + win.th)
|
||||||
|
xclear(winx, winy + win.ch, winx + width, win.h);
|
||||||
|
|
||||||
|
/* Clean up the region we want to draw to. */
|
||||||
|
@@ -1569,35 +1573,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 - \
|
||||||
|
+ win.hborderpx + cx * win.cw,
|
||||||
|
+ win.vborderpx + (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,
|
||||||
|
+ win.hborderpx + cx * win.cw,
|
||||||
|
+ win.vborderpx + cy * win.ch,
|
||||||
|
cursorthickness, win.ch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
XftDrawRect(xw.draw, &drawcol,
|
||||||
|
- borderpx + cx * win.cw,
|
||||||
|
- borderpx + cy * win.ch,
|
||||||
|
+ win.hborderpx + cx * win.cw,
|
||||||
|
+ win.vborderpx + cy * win.ch,
|
||||||
|
win.cw - 1, 1);
|
||||||
|
XftDrawRect(xw.draw, &drawcol,
|
||||||
|
- borderpx + cx * win.cw,
|
||||||
|
- borderpx + cy * win.ch,
|
||||||
|
+ win.hborderpx + cx * win.cw,
|
||||||
|
+ win.vborderpx + cy * win.ch,
|
||||||
|
1, win.ch - 1);
|
||||||
|
XftDrawRect(xw.draw, &drawcol,
|
||||||
|
- borderpx + (cx + 1) * win.cw - 1,
|
||||||
|
- borderpx + cy * win.ch,
|
||||||
|
+ win.hborderpx + (cx + 1) * win.cw - 1,
|
||||||
|
+ win.vborderpx + cy * win.ch,
|
||||||
|
1, win.ch - 1);
|
||||||
|
XftDrawRect(xw.draw, &drawcol,
|
||||||
|
- borderpx + cx * win.cw,
|
||||||
|
- borderpx + (cy + 1) * win.ch - 1,
|
||||||
|
+ win.hborderpx + cx * win.cw,
|
||||||
|
+ win.vborderpx + (cy + 1) * win.ch - 1,
|
||||||
|
win.cw, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.37.1
|
||||||
|
|
||||||
@@ -45,11 +45,6 @@ typedef struct {
|
|||||||
signed char appcursor; /* application cursor */
|
signed char appcursor; /* application cursor */
|
||||||
} Key;
|
} Key;
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
PixelGeometry,
|
|
||||||
CellGeometry
|
|
||||||
} Geometry;
|
|
||||||
|
|
||||||
/* X modifiers */
|
/* X modifiers */
|
||||||
#define XK_ANY_MOD UINT_MAX
|
#define XK_ANY_MOD UINT_MAX
|
||||||
#define XK_NO_MOD 0
|
#define XK_NO_MOD 0
|
||||||
@@ -1132,7 +1127,7 @@ xicdestroy(XIC xim, XPointer client, XPointer call)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xinit(int w, int h)
|
xinit(int cols, int rows)
|
||||||
{
|
{
|
||||||
XGCValues gcvalues;
|
XGCValues gcvalues;
|
||||||
Cursor cursor;
|
Cursor cursor;
|
||||||
@@ -1157,16 +1152,8 @@ xinit(int w, int h)
|
|||||||
xloadcols();
|
xloadcols();
|
||||||
|
|
||||||
/* adjust fixed window geometry */
|
/* adjust fixed window geometry */
|
||||||
switch (geometry) {
|
win.w = 2 * borderpx + cols * win.cw;
|
||||||
case CellGeometry:
|
win.h = 2 * borderpx + rows * win.ch;
|
||||||
win.w = 2 * borderpx + w * win.cw;
|
|
||||||
win.h = 2 * borderpx + h * win.ch;
|
|
||||||
break;
|
|
||||||
case PixelGeometry:
|
|
||||||
win.w = w;
|
|
||||||
win.h = h;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (xw.gm & XNegative)
|
if (xw.gm & XNegative)
|
||||||
xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
|
xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
|
||||||
if (xw.gm & YNegative)
|
if (xw.gm & YNegative)
|
||||||
@@ -2081,12 +2068,6 @@ main(int argc, char *argv[])
|
|||||||
case 'g':
|
case 'g':
|
||||||
xw.gm = XParseGeometry(EARGF(usage()),
|
xw.gm = XParseGeometry(EARGF(usage()),
|
||||||
&xw.l, &xw.t, &cols, &rows);
|
&xw.l, &xw.t, &cols, &rows);
|
||||||
geometry = CellGeometry;
|
|
||||||
break;
|
|
||||||
case 'G':
|
|
||||||
xw.gm = XParseGeometry(EARGF(usage()),
|
|
||||||
&xw.l, &xw.t, &width, &height);
|
|
||||||
geometry = PixelGeometry;
|
|
||||||
break;
|
break;
|
||||||
case 'i':
|
case 'i':
|
||||||
xw.isfixed = 1;
|
xw.isfixed = 1;
|
||||||
@@ -2123,19 +2104,10 @@ run:
|
|||||||
|
|
||||||
setlocale(LC_CTYPE, "");
|
setlocale(LC_CTYPE, "");
|
||||||
XSetLocaleModifiers("");
|
XSetLocaleModifiers("");
|
||||||
switch (geometry) {
|
|
||||||
case CellGeometry:
|
|
||||||
xinit(cols, rows);
|
|
||||||
break;
|
|
||||||
case PixelGeometry:
|
|
||||||
xinit(width, height);
|
|
||||||
cols = (win.w - 2 * borderpx) / win.cw;
|
|
||||||
rows = (win.h - 2 * borderpx) / win.ch;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
cols = MAX(cols, 1);
|
cols = MAX(cols, 1);
|
||||||
rows = MAX(rows, 1);
|
rows = MAX(rows, 1);
|
||||||
tnew(cols, rows);
|
tnew(cols, rows);
|
||||||
|
xinit(cols, rows);
|
||||||
xsetenv();
|
xsetenv();
|
||||||
selinit();
|
selinit();
|
||||||
run();
|
run();
|
||||||
|
|||||||
Reference in New Issue
Block a user