diff options
| author | Shiva <shiv@shiv.me> | 2017-01-29 21:59:15 -0800 | 
|---|---|---|
| committer | Shiva <shiv@shiv.me> | 2017-01-29 21:59:15 -0800 | 
| commit | 97e27bc64d415a561cd78babb2cc9e383b42ffcb (patch) | |
| tree | b944e475f287e31d2df2f73227c13b4f93cb3e9d /patches/st-scrollback-mouse-20161020-6e79e83.diff | |
| parent | efde1e896e2682e8afb6bd278a3035f43bbf14df (diff) | |
Update readme with details about patches
Diffstat (limited to 'patches/st-scrollback-mouse-20161020-6e79e83.diff')
| -rw-r--r-- | patches/st-scrollback-mouse-20161020-6e79e83.diff | 62 | 
1 files changed, 62 insertions, 0 deletions
diff --git a/patches/st-scrollback-mouse-20161020-6e79e83.diff b/patches/st-scrollback-mouse-20161020-6e79e83.diff new file mode 100644 index 0000000..05b8b45 --- /dev/null +++ b/patches/st-scrollback-mouse-20161020-6e79e83.diff @@ -0,0 +1,62 @@ +diff --git a/config.def.h b/config.def.h +index eae969e..34ebb44 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -152,8 +152,14 @@ static unsigned int defaultunderline = 7; +  */ + 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" }, ++}; ++ ++static MouseKey mkeys[] = { ++	/* button               mask            function        argument */ ++	{ Button4,              ShiftMask,      kscrollup,      {.i =  1} }, ++	{ Button5,              ShiftMask,      kscrolldown,    {.i =  1} }, + }; +  + /* Internal keyboard shortcuts. */ +diff --git a/st.c b/st.c +index 233d301..c71b6e7 100644 +--- a/st.c ++++ b/st.c +@@ -299,6 +299,13 @@ typedef union { + 	const void *v; + } Arg; +  ++typedef struct { ++	uint b; ++	uint mask; ++	void (*func)(const Arg *); ++	const Arg arg; ++} MouseKey; ++ + typedef struct { + 	uint mod; + 	KeySym keysym; +@@ -953,6 +960,7 @@ bpress(XEvent *e) + { + 	struct timespec now; + 	MouseShortcut *ms; ++	MouseKey *mk; +  + 	if (IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) { + 		mousereport(e); +@@ -967,6 +975,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) { + 		clock_gettime(CLOCK_MONOTONIC, &now); +   | 
