[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: master 05705454d5: Don't transfer window attributes trying to find t
From: |
Po Lu |
Subject: |
Re: master 05705454d5: Don't transfer window attributes trying to find the XM drag window |
Date: |
Mon, 19 Sep 2022 18:18:35 +0800 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux) |
martin rudalics <rudalics@gmx.at> writes:
> If we make it too "deep", the frame might still be alive and thus escape
> the check.
How so?
I'm thinking of the place where keyboard.c calls handle-focus-in, namely
here:
/* Process special events within read_char
and loop around to read another event. */
save = Vquit_flag;
Vquit_flag = Qnil;
tem = access_keymap (get_keymap (Vspecial_event_map, 0, 1), c, 0, 0, 1);
Vquit_flag = save;
if (!NILP (tem))
{
struct buffer *prev_buffer = current_buffer;
last_input_event = c;
call4 (Qcommand_execute, tem, Qnil, Fvector (1, &last_input_event), Qt);
<===
if (CONSP (c) && !NILP (Fmemq (XCAR (c), Vwhile_no_input_ignore_events))
&& !end_time)
/* We stopped being idle for this event; undo that. This
prevents automatic window selection (under
mouse-autoselect-window) from acting as a real input event, for
example banishing the mouse under mouse-avoidance-mode. */
timer_resume_idle ();
#ifdef HAVE_NS
if (CONSP (c)
&& (EQ (XCAR (c), intern ("ns-unput-working-text"))))
input_was_pending = input_pending;
#endif
if (current_buffer != prev_buffer)
{
/* The command may have changed the keymaps. Pretend there
is input in another keyboard and return. This will
recalculate keymaps. */
c = make_fixnum (-2);
goto exit;
}
else
goto retry;
}