diff options
Diffstat (limited to 'st/patches/st-scrollback-mouse-altscreen-20200416-5703aa0.diff')
| -rw-r--r-- | st/patches/st-scrollback-mouse-altscreen-20200416-5703aa0.diff | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/st/patches/st-scrollback-mouse-altscreen-20200416-5703aa0.diff b/st/patches/st-scrollback-mouse-altscreen-20200416-5703aa0.diff new file mode 100644 index 0000000..fbade29 --- /dev/null +++ b/st/patches/st-scrollback-mouse-altscreen-20200416-5703aa0.diff | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | diff --git a/config.def.h b/config.def.h | ||
| 2 | index 4b3bf15..1986316 100644 | ||
| 3 | --- a/config.def.h | ||
| 4 | +++ b/config.def.h | ||
| 5 | @@ -163,8 +163,8 @@ static uint forcemousemod = ShiftMask; | ||
| 6 | */ | ||
| 7 | static MouseShortcut mshortcuts[] = { | ||
| 8 | /* mask button function argument release */ | ||
| 9 | - { ShiftMask, Button4, kscrollup, {.i = 1} }, | ||
| 10 | - { ShiftMask, Button5, kscrolldown, {.i = 1} }, | ||
| 11 | + { XK_ANY_MOD, Button4, kscrollup, {.i = 1}, 0, /* !alt */ -1 }, | ||
| 12 | + { XK_ANY_MOD, Button5, kscrolldown, {.i = 1}, 0, /* !alt */ -1 }, | ||
| 13 | { XK_ANY_MOD, Button2, selpaste, {.i = 0}, 1 }, | ||
| 14 | { XK_ANY_MOD, Button4, ttysend, {.s = "\031"} }, | ||
| 15 | { XK_ANY_MOD, Button5, ttysend, {.s = "\005"} }, | ||
| 16 | diff --git a/st.c b/st.c | ||
| 17 | index f8b6f67..dd4cb31 100644 | ||
| 18 | --- st.c | ||
| 19 | +++ st.c | ||
| 20 | @@ -1045,6 +1045,11 @@ tnew(int col, int row) | ||
| 21 | treset(); | ||
| 22 | } | ||
| 23 | |||
| 24 | +int tisaltscr(void) | ||
| 25 | +{ | ||
| 26 | + return IS_SET(MODE_ALTSCREEN); | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | void | ||
| 30 | tswapscreen(void) | ||
| 31 | { | ||
| 32 | diff --git a/st.h b/st.h | ||
| 33 | index 1332cf1..f9ad815 100644 | ||
| 34 | --- st.h | ||
| 35 | +++ st.h | ||
| 36 | @@ -89,6 +89,7 @@ void sendbreak(const Arg *); | ||
| 37 | void toggleprinter(const Arg *); | ||
| 38 | |||
| 39 | int tattrset(int); | ||
| 40 | +int tisaltscr(void); | ||
| 41 | void tnew(int, int); | ||
| 42 | void tresize(int, int); | ||
| 43 | void tsetdirtattr(int); | ||
| 44 | diff --git a/x.c b/x.c | ||
| 45 | index e5f1737..b8fbd7b 100644 | ||
| 46 | --- x.c | ||
| 47 | +++ x.c | ||
| 48 | @@ -34,6 +34,7 @@ typedef struct { | ||
| 49 | void (*func)(const Arg *); | ||
| 50 | const Arg arg; | ||
| 51 | uint release; | ||
| 52 | + int altscrn; /* 0: don't care, -1: not alt screen, 1: alt screen */ | ||
| 53 | } MouseShortcut; | ||
| 54 | |||
| 55 | typedef struct { | ||
| 56 | @@ -446,6 +447,7 @@ mouseaction(XEvent *e, uint release) | ||
| 57 | for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { | ||
| 58 | if (ms->release == release && | ||
| 59 | ms->button == e->xbutton.button && | ||
| 60 | + (!ms->altscrn || (ms->altscrn == (tisaltscr() ? 1 : -1))) && | ||
| 61 | (match(ms->mod, state) || /* exact or forced */ | ||
| 62 | match(ms->mod, state & ~forcemousemod))) { | ||
| 63 | ms->func(&(ms->arg)); | ||
