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;