1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-04-21 05:21:37 -07:00

Fix an infinite loop if the window manager pings Emacs during DND

* src/xterm.c (handle_one_xevent): Work around _NET_WM_PING
infinite loop during drag and drop.
This commit is contained in:
Po Lu 2022-03-24 11:41:29 +08:00
parent d81df9e449
commit ebd5725e0b

View file

@ -11014,7 +11014,19 @@ handle_one_xevent (struct x_display_info *dpyinfo,
send_event.xclient.window = dpyinfo->root_window;
XSendEvent (dpyinfo->display, dpyinfo->root_window, False,
SubstructureRedirectMask | SubstructureNotifyMask,
/* FIXME: handling window stacking changes
during drag-and-drop requires Emacs to
select for SubstructureNotifyMask,
which in turn causes the message to be
sent to Emacs itself using the event
mask specified by the EWMH. To avoid
an infinite loop, just use
SubstructureRedirectMask when a
drag-and-drop operation is in
progress. */
((x_dnd_in_progress || x_dnd_waiting_for_finish)
? SubstructureRedirectMask
: SubstructureRedirectMask | SubstructureNotifyMask),
&send_event);
*finish = X_EVENT_DROP;