Allow mouse selection override using ShiftMask

Similar to xterm or urxvt holding shift before selecting text with the mouse
allows to override copying text. For example in tmux with "mode-mouse on" or
vim (compiled with --with-x), mc, htop, etc.

forceselmod in config.h sets the modifier to use this mode, by default
ShiftMask.

Signed-off-by: Hiltjo Posthuma <hiltjo@codemadness.org>
This commit is contained in:
Hiltjo Posthuma
2014-05-12 14:39:37 +02:00
committed by Roberto E. Vargas Caballero
parent bdb850a16a
commit cf890e5bf0
2 changed files with 9 additions and 5 deletions

8
st.c
View File

@ -765,7 +765,7 @@ selsnap(int mode, int *x, int *y, int direction) {
void
getbuttoninfo(XEvent *e) {
int type;
uint state = e->xbutton.state &~Button1Mask;
uint state = e->xbutton.state & ~(Button1Mask | forceselmod);
sel.alt = IS_SET(MODE_ALTSCREEN);
@ -858,7 +858,7 @@ bpress(XEvent *e) {
struct timeval now;
Mousekey *mk;
if(IS_SET(MODE_MOUSE)) {
if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
mousereport(e);
return;
}
@ -1090,7 +1090,7 @@ xsetsel(char *str) {
void
brelease(XEvent *e) {
if(IS_SET(MODE_MOUSE)) {
if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
mousereport(e);
return;
}
@ -1113,7 +1113,7 @@ void
bmotion(XEvent *e) {
int oldey, oldex, oldsby, oldsey;
if(IS_SET(MODE_MOUSE)) {
if(IS_SET(MODE_MOUSE) && !(e->xbutton.state & forceselmod)) {
mousereport(e);
return;
}