emacs-devel
[Top][All Lists]
Advanced

[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;
    }


reply via email to

[Prev in Thread] Current Thread [Next in Thread]