X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=terminal.c;fp=terminal.c;h=ee88974b56326bca9cfcd0d602ef2761011562c6;hb=7d394fc9e9c705770f6bde26b67df1b00ea82c64;hp=71b3bec676d59b9afe65d33637ebb7151d568c15;hpb=0f04cab1517cd158e2d959bf0879ae5983d163fd;p=PuTTY.git diff --git a/terminal.c b/terminal.c index 71b3bec6..ee88974b 100644 --- a/terminal.c +++ b/terminal.c @@ -5896,7 +5896,7 @@ void term_mouse(Terminal *term, Mouse_Button braw, Mouse_Button bcooked, */ if (raw_mouse && (term->selstate != ABOUT_TO) && (term->selstate != DRAGGING)) { - int encstate = 0, r, c; + int encstate = 0, r, c, wheel; char abuf[32]; int len = 0; @@ -5905,22 +5905,35 @@ void term_mouse(Terminal *term, Mouse_Button braw, Mouse_Button bcooked, switch (braw) { case MBT_LEFT: encstate = 0x00; /* left button down */ + wheel = FALSE; break; case MBT_MIDDLE: encstate = 0x01; + wheel = FALSE; break; case MBT_RIGHT: encstate = 0x02; + wheel = FALSE; break; case MBT_WHEEL_UP: encstate = 0x40; + wheel = TRUE; break; case MBT_WHEEL_DOWN: encstate = 0x41; + wheel = TRUE; break; - default: break; /* placate gcc warning about enum use */ + default: + return; } - switch (a) { + if (wheel) { + /* For mouse wheel buttons, we only ever expect to see + * MA_CLICK actions, and we don't try to keep track of + * the buttons being 'pressed' (since without matching + * click/release pairs that's pointless). */ + if (a != MA_CLICK) + return; + } else switch (a) { case MA_DRAG: if (term->xterm_mouse == 1) return; @@ -5937,7 +5950,8 @@ void term_mouse(Terminal *term, Mouse_Button braw, Mouse_Button bcooked, return; term->mouse_is_down = braw; break; - default: break; /* placate gcc warning about enum use */ + default: + return; } if (shift) encstate += 0x04;