From: Po Lu Date: Sun, 17 Apr 2022 00:38:37 +0000 (+0800) Subject: Restore pending_signals at a point in the DND event loop X-Git-Tag: emacs-29.0.90~1931^2~488 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=18ec3fcce952efee283bfd6599a9de5f78f14a26;p=emacs.git Restore pending_signals at a point in the DND event loop * src/xterm.c (x_dnd_begin_drag_and_drop): Restore pending_signals after unblock_input. --- diff --git a/src/xterm.c b/src/xterm.c index b65de88674f..89dd28c0d58 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -9465,6 +9465,7 @@ x_dnd_begin_drag_and_drop (struct frame *f, Time time, Atom xaction, XTextProperty prop; xm_drop_start_message dmsg; Lisp_Object frame_object, x, y, frame, local_value; + bool signals_were_pending; #ifdef HAVE_XKB XkbStateRec keyboard_state; #endif @@ -9674,7 +9675,12 @@ x_dnd_begin_drag_and_drop (struct frame *f, Time time, Atom xaction, &next_event, &finish, &hold_quit); #endif #endif + /* The unblock_input below might try to read input, but + XTread_socket does nothing inside a drag-and-drop event + loop, so don't let it clear the pending_signals flag. */ + signals_were_pending = pending_signals; unblock_input (); + pending_signals = signals_were_pending; if (x_dnd_movement_frame) {