emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Closing popup causes mouse event


From: Richard M. Stallman
Subject: Re: Closing popup causes mouse event
Date: Tue, 18 Oct 2005 22:42:37 -0400

    It is easy to quit the loop inside the read_socket_hook function once
    a mouse-down event has been read.  But there's another loop in the
    caller side, i.e., read_avail_input in keyboard.c:

          while (nr = (*read_socket_hook) (input_fd, expected, &hold_quit), nr 
> 0)
            {
              nread += nr;
              expected = 0;
            }

    I'm not sure why it should loop.

I think the reason for this loop is in case read_socket_hook does not
read all the events that are waiting.  The idea that there could be
events it should not touch is not part of the current design.

Whether there is a real chance that read_socket_hook might fail to
return all the pending events, I am not sure.  If it can never do so
accidentally, then this loop is unnecessary.  However, to fully
implement the idea of events that Emacs should not touch would require
more change, as you said.

      The mouse-down event should be processed by
    the read_socket_hook function to generate a Lisp-level event, but the
    mouse-up event should be processed by another event loop for the
    pop-up menu (e.g., PopUpMenuSelect for the Carbon port) and it should
    not be read by the read_socket_hook function.

Why does it matter if that up-event is processed by the menu's loop?
If it does not get to see the up-event, does something go wrong?

Or is it simply a matter of preventing this up-event from being
processed like a normal up-event by Emacs?  I think there are cleaner
ways to do that.




reply via email to

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