commit b82688ff68ebd0b3403e205cbdbcc685356fcb0e
parent d64fe0c92a1a09242af8774b8b89f260437e79f0
Author: Ivan Delalande <colona@ycc.fr>
Date:   Sun, 31 May 2020 12:32:43 -0700
[st][patch][hidecursor] add patch version for 0.8.3 and later
Remove patch for 0.8.1 as the 0.8 version works fine up to 0.8.2, add a
version for 0.8.3 that also works up to current st git master (0.8 patch
breaks after the forcemousemod rename in commit b6d280d).
Diffstat:
3 files changed, 89 insertions(+), 89 deletions(-)
diff --git a/st.suckless.org/patches/hidecursor/index.md b/st.suckless.org/patches/hidecursor/index.md
@@ -14,7 +14,7 @@ Download
 * [st-hidecursor-0.6.diff](st-hidecursor-0.6.diff)
 * [st-hidecursor-0.7.diff](st-hidecursor-0.7.diff)
 * [st-hidecursor-0.8.diff](st-hidecursor-0.8.diff)
-* [st-hidecursor-0.8.1.diff](st-hidecursor-0.8.1.diff)
+* [st-hidecursor-0.8.3.diff](st-hidecursor-0.8.3.diff)
 
 Authors
 -------
diff --git a/st.suckless.org/patches/hidecursor/st-hidecursor-0.8.1.diff b/st.suckless.org/patches/hidecursor/st-hidecursor-0.8.1.diff
@@ -1,88 +0,0 @@
-diff --git a/x.c b/x.c
-index c343ba2..a40de8c 100644
---- a/x.c
-+++ b/x.c
-@@ -96,6 +96,11 @@ typedef struct {
- 	Draw draw;
- 	Visual *vis;
- 	XSetWindowAttributes attrs;
-+	/* Here, we use the term *pointer* to differentiate the cursor
-+	 * one sees when hovering the mouse over the terminal from, e.g.,
-+	 * a green rectangle where text would be entered. */
-+	Cursor vpointer, bpointer; /* visible and hidden pointers */
-+	int pointerisvisible;
- 	int scr;
- 	int isfixed; /* is fixed geometry? */
- 	int l, t; /* left and top offset */
-@@ -652,6 +657,13 @@ brelease(XEvent *e)
- void
- bmotion(XEvent *e)
- {
-+	if (!xw.pointerisvisible) {
-+		XDefineCursor(xw.dpy, xw.win, xw.vpointer);
-+		xw.pointerisvisible = 1;
-+		if (!IS_SET(MODE_MOUSEMANY))
-+			xsetpointermotion(0);
-+	}
-+
- 	if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
- 		mousereport(e);
- 		return;
-@@ -997,10 +1009,10 @@ void
- xinit(int cols, int rows)
- {
- 	XGCValues gcvalues;
--	Cursor cursor;
- 	Window parent;
- 	pid_t thispid = getpid();
- 	XColor xmousefg, xmousebg;
-+	Pixmap blankpm;
- 
- 	if (!(xw.dpy = XOpenDisplay(NULL)))
- 		die("Can't open display\n");
-@@ -1076,8 +1088,9 @@ xinit(int cols, int rows)
- 		die("XCreateIC failed. Could not obtain input method.\n");
- 
- 	/* white cursor, black outline */
--	cursor = XCreateFontCursor(xw.dpy, mouseshape);
--	XDefineCursor(xw.dpy, xw.win, cursor);
-+	xw.pointerisvisible = 1;
-+	xw.vpointer = XCreateFontCursor(xw.dpy, mouseshape);
-+	XDefineCursor(xw.dpy, xw.win, xw.vpointer);
- 
- 	if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) {
- 		xmousefg.red   = 0xffff;
-@@ -1091,7 +1104,10 @@ xinit(int cols, int rows)
- 		xmousebg.blue  = 0x0000;
- 	}
- 
--	XRecolorCursor(xw.dpy, cursor, &xmousefg, &xmousebg);
-+	XRecolorCursor(xw.dpy, xw.vpointer, &xmousefg, &xmousebg);
-+	blankpm = XCreateBitmapFromData(xw.dpy, xw.win, &(char){0}, 1, 1);
-+	xw.bpointer = XCreatePixmapCursor(xw.dpy, blankpm, blankpm,
-+					  &xmousefg, &xmousebg, 0, 0);
- 
- 	xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
- 	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
-@@ -1574,6 +1590,8 @@ unmap(XEvent *ev)
- void
- xsetpointermotion(int set)
- {
-+	if (!set && !xw.pointerisvisible)
-+		return;
- 	MODBIT(xw.attrs.event_mask, set, PointerMotionMask);
- 	XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, &xw.attrs);
- }
-@@ -1692,6 +1710,12 @@ kpress(XEvent *ev)
- 	Status status;
- 	Shortcut *bp;
- 
-+	if (xw.pointerisvisible) {
-+		XDefineCursor(xw.dpy, xw.win, xw.bpointer);
-+		xsetpointermotion(1);
-+		xw.pointerisvisible = 0;
-+	}
-+
- 	if (IS_SET(MODE_KBDLOCK))
- 		return;
- 
diff --git a/st.suckless.org/patches/hidecursor/st-hidecursor-0.8.3.diff b/st.suckless.org/patches/hidecursor/st-hidecursor-0.8.3.diff
@@ -0,0 +1,88 @@
+diff --git a/x.c b/x.c
+index e5f1737..7e759b0 100644
+--- a/x.c
++++ b/x.c
+@@ -103,6 +103,11 @@ typedef struct {
+ 	Draw draw;
+ 	Visual *vis;
+ 	XSetWindowAttributes attrs;
++	/* Here, we use the term *pointer* to differentiate the cursor
++	 * one sees when hovering the mouse over the terminal from, e.g.,
++	 * a green rectangle where text would be entered. */
++	Cursor vpointer, bpointer; /* visible and hidden pointers */
++	int pointerisvisible;
+ 	int scr;
+ 	int isfixed; /* is fixed geometry? */
+ 	int l, t; /* left and top offset */
+@@ -698,6 +703,13 @@ brelease(XEvent *e)
+ void
+ bmotion(XEvent *e)
+ {
++	if (!xw.pointerisvisible) {
++		XDefineCursor(xw.dpy, xw.win, xw.vpointer);
++		xw.pointerisvisible = 1;
++		if (!IS_SET(MODE_MOUSEMANY))
++			xsetpointermotion(0);
++	}
++
+ 	if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forcemousemod)) {
+ 		mousereport(e);
+ 		return;
+@@ -1099,10 +1111,10 @@ void
+ xinit(int cols, int rows)
+ {
+ 	XGCValues gcvalues;
+-	Cursor cursor;
+ 	Window parent;
+ 	pid_t thispid = getpid();
+ 	XColor xmousefg, xmousebg;
++	Pixmap blankpm;
+ 
+ 	if (!(xw.dpy = XOpenDisplay(NULL)))
+ 		die("can't open display\n");
+@@ -1166,8 +1178,9 @@ xinit(int cols, int rows)
+ 	}
+ 
+ 	/* white cursor, black outline */
+-	cursor = XCreateFontCursor(xw.dpy, mouseshape);
+-	XDefineCursor(xw.dpy, xw.win, cursor);
++	xw.pointerisvisible = 1;
++	xw.vpointer = XCreateFontCursor(xw.dpy, mouseshape);
++	XDefineCursor(xw.dpy, xw.win, xw.vpointer);
+ 
+ 	if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) {
+ 		xmousefg.red   = 0xffff;
+@@ -1181,7 +1194,10 @@ xinit(int cols, int rows)
+ 		xmousebg.blue  = 0x0000;
+ 	}
+ 
+-	XRecolorCursor(xw.dpy, cursor, &xmousefg, &xmousebg);
++	XRecolorCursor(xw.dpy, xw.vpointer, &xmousefg, &xmousebg);
++	blankpm = XCreateBitmapFromData(xw.dpy, xw.win, &(char){0}, 1, 1);
++	xw.bpointer = XCreatePixmapCursor(xw.dpy, blankpm, blankpm,
++					  &xmousefg, &xmousebg, 0, 0);
+ 
+ 	xw.xembed = XInternAtom(xw.dpy, "_XEMBED", False);
+ 	xw.wmdeletewin = XInternAtom(xw.dpy, "WM_DELETE_WINDOW", False);
+@@ -1673,6 +1689,8 @@ unmap(XEvent *ev)
+ void
+ xsetpointermotion(int set)
+ {
++	if (!set && !xw.pointerisvisible)
++		return;
+ 	MODBIT(xw.attrs.event_mask, set, PointerMotionMask);
+ 	XChangeWindowAttributes(xw.dpy, xw.win, CWEventMask, &xw.attrs);
+ }
+@@ -1793,6 +1811,12 @@ kpress(XEvent *ev)
+ 	Status status;
+ 	Shortcut *bp;
+ 
++	if (xw.pointerisvisible) {
++		XDefineCursor(xw.dpy, xw.win, xw.bpointer);
++		xsetpointermotion(1);
++		xw.pointerisvisible = 0;
++	}
++
+ 	if (IS_SET(MODE_KBDLOCK))
+ 		return;
+