emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 8d02624c0e: Fix duplicate wheel events on XI2


From: Po Lu
Subject: master 8d02624c0e: Fix duplicate wheel events on XI2
Date: Tue, 22 Feb 2022 01:11:07 -0500 (EST)

branch: master
commit 8d02624c0ec029ee99e0b1e410429c440bcc4499
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    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 629a098b55..dce0bf306a 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;
                    }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]