emacs-diffs
[Top][All Lists]
Advanced

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

master 9a6b6b1887 2/2: Don't generate superfluous wheel events during dr


From: Po Lu
Subject: master 9a6b6b1887 2/2: Don't generate superfluous wheel events during drag and drop
Date: Sun, 19 Jun 2022 21:17:38 -0400 (EDT)

branch: master
commit 9a6b6b1887c62b2f5aee75e213bd1f62bc6577f6
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>

    Don't generate superfluous wheel events during drag and drop
    
    * src/xterm.c (handle_one_xevent): Only set user time and don't
    create wheel events if DND is in progress.
---
 src/xterm.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/xterm.c b/src/xterm.c
index 9a31f9ea09..12d091c1d9 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -19609,6 +19609,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                      x_display_set_last_user_time (dpyinfo, xev->time,
                                                    xev->send_event);
 
+
 #if defined USE_GTK && !defined HAVE_GTK3
                      /* Unlike on Motif, we can't select for XI
                         events on the scroll bar window under GTK+ 2.
@@ -19623,6 +19624,15 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                        goto XI_OTHER;
 #endif
 
+                     /* If this happened during a drag-and-drop
+                        operation, don't send an event.  We only have
+                        to set the user time.  */
+                     if (x_dnd_in_progress
+                         && (command_loop_level + minibuf_level
+                             <= x_dnd_recursion_depth)
+                         && dpyinfo == FRAME_DISPLAY_INFO (x_dnd_frame))
+                       goto XI_OTHER;
+
                      if (fabs (total_x) > 0 || fabs (total_y) > 0)
                        {
                          inev.ie.kind = (fabs (total_y) >= fabs (total_x)
@@ -20853,8 +20863,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
 #endif
 
                  XSETFRAME (inev.ie.frame_or_window, f);
-                 inev.ie.modifiers
-                   = x_x_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), state);
+                 inev.ie.modifiers = x_x_to_emacs_modifiers (dpyinfo, state);
                  inev.ie.timestamp = xev->time;
 
 #ifdef HAVE_X_I18N



reply via email to

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