[wiki] [sites] [st][patch][scrollback] rewrite mouse/altscreen patches || Avi Halachmi (:avih)

From: <git_AT_suckless.org>
Date: Thu, 24 Oct 2019 19:34:31 +0200

commit 8e4c896a95eb81bcec270b20b6aa5f5c0b1aa5ef
Author: Avi Halachmi (:avih) <avihpit_AT_yahoo.com>
Date: Thu Oct 24 20:21:16 2019 +0300

    [st][patch][scrollback] rewrite mouse/altscreen patches
    
    st gained improved mouse shortcut customization support, which broke
    the mouse and altscreen extra patches for the scrollback patch.
    
    These two patches were rewritten to fit with the new support in st, and
    became smaller and more robust.

diff --git a/st.suckless.org/patches/scrollback/index.md b/st.suckless.org/patches/scrollback/index.md
index 85281bbb..242d79ec 100644
--- a/st.suckless.org/patches/scrollback/index.md
+++ b/st.suckless.org/patches/scrollback/index.md
_AT_@ -19,22 +19,29 @@ using `Shift+MouseWheel`.
 * [st-scrollback-mouse-20170427-5a10aca.diff](st-scrollback-mouse-20170427-5a10aca.diff)
 * [st-scrollback-mouse-0.8.diff](st-scrollback-mouse-0.8.diff)
 * [st-scrollback-mouse-0.8.2.diff](st-scrollback-mouse-0.8.2.diff)
+* [st-scrollback-mouse-20191024-a2c479c.diff](st-scrollback-mouse-20191024-a2c479c.diff)
 
 Apply the following patch on top of the previous two to allow scrollback using
 mouse wheel only when not in `MODE_ALTSCREEN`. For example the content is being
 scrolled instead of the scrollback buffer in `less`. Consequently the Shift
-modifier for scrolling is not needed anymore. **Note: It might break mkeys
-other than scrolling functions.**
+modifier for scrolling is not needed anymore. **Note: patches before
+`20191024-a2c479c` might break mkeys other than scrolling functions.**
 
 * [st-scrollback-mouse-altscreen-20170427-5a10aca.diff](st-scrollback-mouse-altscreen-20170427-5a10aca.diff)
 * [st-scrollback-mouse-altscreen-0.8.diff](st-scrollback-mouse-altscreen-0.8.diff)
 * [st-scrollback-mouse-altscreen-20190131-e23acb9.diff](st-scrollback-mouse-altscreen-20190131-e23acb9.diff)
+* [st-scrollback-mouse-altscreen-20191024-a2c479c.diff](st-scrollback-mouse-altscreen-20191024-a2c479c.diff)
 
 Notes
 -----
 * Patches modify config.def.h, you need to add mkeys to your own config.h
-* You can not have an mshortcut for the same mkey so remove Button4 and Button5
- from mshortcuts in config.h
+* With patches before `20191024-a2c479c`: you can not have a mshortcut for the
+ same mkey so remove Button4 and Button5 from mshortcuts in config.h
+* The mouse and altscreen patches `20191024-a2c479c` (and later) are simpler and
+ more robust because st gained better support for customized mouse shortcuts.
+ As a result, the altscreen patch doesn't really need the mouse patch. However
+ to keep it simple the instructions stay the same: the alrscreen patch still
+ applies on top of the (now very minimal) mouse patch.
 
 Authors
 -------
_AT_@ -49,3 +56,4 @@ Authors
 * Lorenzo Bracco - <devtry_AT_riseup.net> (update base patch, use static
   variable for config)
 * Kamil Kleban - <funmaker95_AT_gmail.com> (fix altscreen detection)
+* Avi Halachmi - <avihpit_AT_yahoo.com> (mouse + altscreen rewrite after `a2c479c`)
diff --git a/st.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff b/st.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff
new file mode 100644
index 00000000..49eba8e8
--- /dev/null
+++ b/st.suckless.org/patches/scrollback/st-scrollback-mouse-20191024-a2c479c.diff
_AT_@ -0,0 +1,13 @@
+diff --git a/config.def.h b/config.def.h
+index ec1b576..4b3bf15 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -163,6 +163,8 @@ static uint forcemousemod = ShiftMask;
+ */
+ static MouseShortcut mshortcuts[] = {
+ /* mask button function argument release */
++ { ShiftMask, Button4, kscrollup, {.i = 1} },
++ { ShiftMask, Button5, kscrolldown, {.i = 1} },
+ { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },
+ { XK_ANY_MOD, Button4, ttysend, {.s = ""} },
+ { XK_ANY_MOD, Button5, ttysend, {.s = ""} },
diff --git a/st.suckless.org/patches/scrollback/st-scrollback-mouse-altscreen-20191024-a2c479c.diff b/st.suckless.org/patches/scrollback/st-scrollback-mouse-altscreen-20191024-a2c479c.diff
new file mode 100644
index 00000000..cdc19625
--- /dev/null
+++ b/st.suckless.org/patches/scrollback/st-scrollback-mouse-altscreen-20191024-a2c479c.diff
_AT_@ -0,0 +1,63 @@
+diff --git a/config.def.h b/config.def.h
+index 4b3bf15..1986316 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -163,8 +163,8 @@ static uint forcemousemod = ShiftMask;
+ */
+ static MouseShortcut mshortcuts[] = {
+ /* mask button function argument release */
+- { ShiftMask, Button4, kscrollup, {.i = 1} },
+- { ShiftMask, Button5, kscrolldown, {.i = 1} },
++ { XK_ANY_MOD, Button4, kscrollup, {.i = 1}, 0, /* !alt */ -1 },
++ { XK_ANY_MOD, Button5, kscrolldown, {.i = 1}, 0, /* !alt */ -1 },
+ { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 },
+ { XK_ANY_MOD, Button4, ttysend, {.s = ""} },
+ { XK_ANY_MOD, Button5, ttysend, {.s = ""} },
+diff --git a/st.c b/st.c
+index 9a4f5a4..eb5bd86 100644
+--- a/st.c
++++ b/st.c
+_AT_@ -1040,6 +1040,11 @@ tnew(int col, int row)
+ treset();
+ }
+
++int tisaltscr(void)
++{
++ return IS_SET(MODE_ALTSCREEN);
++}
++
+ void
+ tswapscreen(void)
+ {
+diff --git a/st.h b/st.h
+index 1332cf1..f9ad815 100644
+--- a/st.h
++++ b/st.h
+_AT_@ -89,6 +89,7 @@ void sendbreak(const Arg *);
+ void toggleprinter(const Arg *);
+
+ int tattrset(int);
++int tisaltscr(void);
+ void tnew(int, int);
+ void tresize(int, int);
+ void tsetdirtattr(int);
+diff --git a/x.c b/x.c
+index 6406925..de41086 100644
+--- a/x.c
++++ b/x.c
+_AT_@ -34,6 +34,7 @@ typedef struct {
+ void (*func)(const Arg *);
+ const Arg arg;
+ uint release;
++ int altscrn; /* 0: don't care, -1: not alt screen, 1: alt screen */
+ } MouseShortcut;
+
+ typedef struct {
+_AT_@ -426,6 +427,7 @@ mouseaction(XEvent *e, uint release)
+ for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) {
+ if (ms->release == release &&
+ ms->button == e->xbutton.button &&
++ (!ms->altscrn || (ms->altscrn == (tisaltscr() ? 1 : -1))) &&
+ (match(ms->mod, e->xbutton.state) || /* exact or forced */
+ match(ms->mod, e->xbutton.state & ~forcemousemod))) {
+ ms->func(&(ms->arg));
Received on Thu Oct 24 2019 - 19:34:31 CEST

This archive was generated by hypermail 2.3.0 : Thu Oct 24 2019 - 19:36:30 CEST