emacs-devel
[Top][All Lists]
Advanced

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

Re: Making TTY menus more visual


From: Jared Finder
Subject: Re: Making TTY menus more visual
Date: Sat, 03 Oct 2020 12:26:49 -0700
User-agent: Roundcube Webmail/1.3.15

On 2020-10-03 1:50 am, Eli Zaretskii wrote:
Date: Fri, 02 Oct 2020 17:16:55 -0700
From: Jared Finder <jared@finder.org>
Cc: emacs-devel@gnu.org

I see the following things that need to change:

1. Add a new command that calls menu-bar-open with the right value for
initial-x. (this is the patch 001 in the root of the thread)

But patch 001 also includes unrelated parts, the tmm-menubar-item-at-x
function etc., right?

tmm-menubar-item-at-x is a new function to share the conversion of a mouse X to a specific menu item between tmm-menubar and the newly added command, menu-bar-open-mouse.

There's no new code there, it's the existing logic in tmm-menubar.

2. In read_menu_input in term.c, additional logic needs to be added to
handle xterm mouse clicks since the focused menu item will not be
necessarily the one clicked on.

I'm not sure I understand how this can happen.  Can you describe the
sequence of events that could lead to this, assuming tmm-menubar is
NOT involved?  When TTY menus drop down from the menu bar, the focused
item and the one clicked on should always coincide.  Any click on
another item is a click "outside of the popped up menu", and that
should dismiss the menu.

Also, a user may click outside of the popped up menu, which they
would expect to dismiss the menu. (this is patch 002 in the root of
the thread, not yet complete)

This should already work; it does in the MS-Windows build when Emacs
is invoked with -nw.  Please tell more why you think any changes there
are needed.  Perhaps you could take me through the code there and
explain what is missing and why.  (And why do you call posn-x-y in the
patch when X and Y are already known and used by that code? is that
because mouse_get_xy does not yet support xterm-mouse? if so, that
support should be added via the terminal's mouse_position_hook.)

From injecting debug logs into read_menu_input, I can observe that tty-menu-mouse-movement is never received so the highlighted item never changes except due to keyboard input. And from tracing xterm-mouse--read-event-sequence, it appears that Emacs normally does not receive xterm mouse motion events unless a button is pressed.

This appears to be due to xt-mouse sending event code 1002 instead of 1003 (see https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking).

Just sending 1003 instead doesn't just work, but I do see mouse events now coming through. Let me do some more investigation here and I will get back to you.

  -- MJF



reply via email to

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