X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=78d8a01876e8ab81c9bf2845904874cc388e3c76;hb=cf890e5bf06a65a35fe195aa1ef8ae3e1eb55f51;hp=5946c7c04bf9be54caeb31346d131f59331fa1ea;hpb=bdb850a16a6d7a2d12b2bd5500a3b7d70290a74a;p=st.git diff --git a/st.c b/st.c index 5946c7c..78d8a01 100644 --- a/st.c +++ b/st.c @@ -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; }