emacs-diffs
[Top][All Lists]
Advanced

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

master ffd38a9911: Fix setting user time upon scrolling self during DND


From: Po Lu
Subject: master ffd38a9911: Fix setting user time upon scrolling self during DND
Date: Tue, 19 Jul 2022 21:50:56 -0400 (EDT)

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

    Fix setting user time upon scrolling self during DND
    
    * src/xterm.c (handle_one_xevent): Set user time for emulated
    scroll wheel events if Emacs ends up scrolled during DND.
---
 src/xterm.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/xterm.c b/src/xterm.c
index c9acc9055d..86dc122f93 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -20418,11 +20418,22 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                      dnd_state = xi_convert_event_state (xev);
 
                      if (x_dnd_last_window_is_frame)
-                       x_dnd_note_self_wheel (dpyinfo,
-                                              x_dnd_last_seen_window,
-                                              xev->root_x, xev->root_y,
-                                              xev->detail, dnd_state,
-                                              xev->time);
+                       {
+#ifdef XI_PointerEmulated
+                         /* Set the last user time here even if this
+                            is an emulated button event, since
+                            something happened in response.  */
+
+                         if (xev->flags & XIPointerEmulated)
+                           x_display_set_last_user_time (dpyinfo, xev->time,
+                                                         xev->send_event);
+#endif
+                         x_dnd_note_self_wheel (dpyinfo,
+                                                x_dnd_last_seen_window,
+                                                xev->root_x, xev->root_y,
+                                                xev->detail, dnd_state,
+                                                xev->time);
+                       }
                      else
                        x_dnd_send_position (x_dnd_frame,
                                             x_dnd_last_seen_window,
@@ -20431,7 +20442,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
                                             xev->time, x_dnd_wanted_action,
                                             xev->detail, dnd_state);
 
-                     goto XI_OTHER;
+                     goto OTHER;
                    }
 
                  if (xev->evtype == XI_ButtonRelease)



reply via email to

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