]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix duplicate wheel events on XI2
authorPo Lu <luangruo@yahoo.com>
Tue, 22 Feb 2022 06:10:29 +0000 (14:10 +0800)
committerPo Lu <luangruo@yahoo.com>
Tue, 22 Feb 2022 06:10:29 +0000 (14:10 +0800)
* src/xterm.c (handle_one_xevent): Don't generate wheel events
on XI_ButtonPress.

src/xterm.c

index 629a098b553b62ac1011c7284b3f374f46e7cb60..dce0bf306abd61c81bfaf8c8c2ae1eb5f2a3612e 100644 (file)
@@ -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;
                    }