From: Po Lu Date: Mon, 20 Jun 2022 01:17:21 +0000 (+0800) Subject: Don't generate superfluous wheel events during drag and drop X-Git-Tag: emacs-29.0.90~1447^2~1598 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9a6b6b1887c62b2f5aee75e213bd1f62bc6577f6;p=emacs.git 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. --- diff --git a/src/xterm.c b/src/xterm.c index 9a31f9ea094..12d091c1d92 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