From 8d02624c0ec029ee99e0b1e410429c440bcc4499 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 22 Feb 2022 14:10:29 +0800 Subject: [PATCH] Fix duplicate wheel events on XI2 * src/xterm.c (handle_one_xevent): Don't generate wheel events on XI_ButtonPress. --- src/xterm.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 629a098b553..dce0bf306ab 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -11393,22 +11393,25 @@ handle_one_xevent (struct x_display_info *dpyinfo, { if (xev->detail >= 4 && xev->detail <= 8) { - if (xev->detail <= 5) - inev.ie.kind = WHEEL_EVENT; - else - inev.ie.kind = HORIZ_WHEEL_EVENT; + if (xev->evtype == XI_ButtonRelease) + { + if (xev->detail <= 5) + inev.ie.kind = WHEEL_EVENT; + else + inev.ie.kind = HORIZ_WHEEL_EVENT; - inev.ie.timestamp = xev->time; + inev.ie.timestamp = xev->time; - XSETINT (inev.ie.x, lrint (xev->event_x)); - XSETINT (inev.ie.y, lrint (xev->event_y)); - XSETFRAME (inev.ie.frame_or_window, f); + XSETINT (inev.ie.x, lrint (xev->event_x)); + XSETINT (inev.ie.y, lrint (xev->event_y)); + XSETFRAME (inev.ie.frame_or_window, f); - inev.ie.modifiers - |= x_x_to_emacs_modifiers (dpyinfo, - xev->mods.effective); + inev.ie.modifiers + |= x_x_to_emacs_modifiers (dpyinfo, + xev->mods.effective); - inev.ie.modifiers |= xev->detail % 2 ? down_modifier : up_modifier; + inev.ie.modifiers |= xev->detail % 2 ? down_modifier : up_modifier; + } goto XI_OTHER; } -- 2.39.5