• src/doors/termgfx/term.c term.h

    From Rob Swindell (on Debian Linux)@1:103/705 to Git commit to main/sbbs/master on Mon Aug 10 21:30:27 2026
    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>
    --- SBBSecho 3.37-Linux
    * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)