diff options
Diffstat (limited to 'patches/st-scrollback-mouse-0.8.diff')
-rw-r--r-- | patches/st-scrollback-mouse-0.8.diff | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/patches/st-scrollback-mouse-0.8.diff b/patches/st-scrollback-mouse-0.8.diff new file mode 100644 index 0000000..3b2729e --- /dev/null +++ b/patches/st-scrollback-mouse-0.8.diff @@ -0,0 +1,71 @@ +diff --git a/config.def.h b/config.def.h +index 27d42ca..feec7e2 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -156,8 +156,14 @@ static unsigned int defaultattr = 11; + */ + static MouseShortcut mshortcuts[] = { + /* button mask string */ +- { Button4, XK_ANY_MOD, "\031" }, +- { Button5, XK_ANY_MOD, "\005" }, ++ { Button4, XK_NO_MOD, "\031" }, ++ { Button5, XK_NO_MOD, "\005" }, ++}; ++ ++MouseKey mkeys[] = { ++ /* button mask function argument */ ++ { Button4, ShiftMask, kscrollup, {.i = 1} }, ++ { Button5, ShiftMask, kscrolldown, {.i = 1} }, + }; + + /* Internal keyboard shortcuts. */ +diff --git a/st.h b/st.h +index 628e876..cdd25ae 100644 +--- a/st.h ++++ b/st.h +@@ -81,6 +81,13 @@ typedef union { + const void *v; + } Arg; + ++typedef struct { ++ uint b; ++ uint mask; ++ void (*func)(const Arg *); ++ const Arg arg; ++} MouseKey; ++ + void die(const char *, ...); + void redraw(void); + void draw(void); +@@ -129,3 +136,4 @@ extern char *termname; + extern unsigned int tabspaces; + extern unsigned int defaultfg; + extern unsigned int defaultbg; ++extern MouseKey mkeys[]; +diff --git a/x.c b/x.c +index d43a529..754d859 100644 +--- a/x.c ++++ b/x.c +@@ -409,6 +409,7 @@ bpress(XEvent *e) + { + struct timespec now; + MouseShortcut *ms; ++ MouseKey *mk; + int snap; + + if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { +@@ -424,6 +425,14 @@ bpress(XEvent *e) + } + } + ++ for (mk = mkeys; mk < mkeys + LEN(mkeys); mk++) { ++ if (e->xbutton.button == mk->b ++ && match(mk->mask, e->xbutton.state)) { ++ mk->func(&mk->arg); ++ return; ++ } ++ } ++ + if (e->xbutton.button == Button1) { + /* + * If the user clicks below predefined timeouts specific |