https://gitlab.synchro.net/main/sbbs/-/commit/66367891c957d731bc78f1b2
Modified Files:
src/doors/termgfx/term.c term.h
Log Message:
termgfx: quiet the terminal's own mouse pointer while a door runs
An arrow floating over a full-screen scene is what gives away that this
is a window rather than a game, and a door that draws its own cursor -- SyncSCUMM does -- ends up showing two.
Two sequences, because no terminal implements both and each ignores the other's. xterm gets XTSMPOINTER pointerMode 3, which hides the pointer
and keeps it hidden across the window border; mode 2 is the near miss,
unhiding whenever the pointer crosses it. The default is not enough on
its own: it is mode 1, "hide if the mouse tracking mode is not enabled",
and these doors enable tracking, so xterm deliberately keeps the pointer visible for exactly this case. foot gets OSC 22 with an xcursor name --
it cannot hide a pointer at all, an empty or unknown name only resets
the shape, so a crosshair is the closest it gets to not being an arrow.
SyncTERM implements neither. cterm has no XTSMPOINTER, and its OSC
handler knows only 4, 8, 10, 11 and 104 and discards the rest, so both
are safe to send blind.
Cosmetic, and only that: no terminal offers the pointer LOCK that would
let a door hide the pointer and still track the hand, so this changes
how the pointer looks and nothing about where it can go or what it
reports.
XTSMPOINTER has no query, so restore writes pointerMode 1 -- the
documented default -- and assumes the user had not chosen their own. A
caller should therefore restore only if it quieted.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net