On Nov 26, 2022, at 7:07 AM, Eli Zaretskii <email@example.com
posn-object-x-y for a display/overlay string measure from the nearest glyph
of the string character, not from the beginning of the string.
Right. My design of three adjacent stretched characters works well (in GUI anyway) by exploiting this.
I don't understand what you mean by "surprisingly it looks pretty good on
TTY without any special casing", if mouse clicks on TTY frames give you this
problem. Are you saying that you only see this with xterm-mouse-mode, but
not with some other mouse which works with Emacs TTY frames?
I only mean it _looks_ good there: the slider moves, and reports the scroll position well, just more granularly, and with no direct mouse interaction possible (or so I thought). For mouse on TTY I’ve only tried (and only have access to) xterm-mouse-mode; in fact wasn’t even aware of it until a user opened an issue.
Why challenging? On TTY frames, align-to always aligns to some character
position, and the mouse clicks are reported in terms of character positions
Not impossible, just more complicated, since there are a number of alignment options, only some of which use align-to. For example you can just replace mode-line-percent-position with the graphical scrollbar, or the user can place the scrollbar at an arbitrary position in the modeline. And calculating the left boundary in the GUI is complicated by proportional fonts, images, and all sorts of things, so this would require serious special casing for the TTY. It’s too bad posn-point doesn’t work in the modeline.
Why do you even need the fine details of the POSITION part of the
mouse-click events on TTY frames?
I use the width of the scrollbar as an analog “fractional line position” area. The precise click scrolls with window to that exact analogous location. In the TTY “precise” simply means “which character”, but in the GUI it’s “which pixel”. I don’t know how many people use mouse in a TTY, so I may just prevent it from doing harm but otherwise leave it disabled. Thanks for the suggestions.