The Windows text cursor vanished: masked-color invert was treated as transparent #270

Merged
enricobuehler merged 1 commits from HitFrostbite/punktfunk:worktree-windows-masked-color-ibeam into main 2026-08-16 19:58:31 +00:00
Member

Summary

  • Alpha-less colour cursors (Windows 11 coloured I-beam, some high-DPI system cursors) use the AND mask plus the colour bitmap as XOR — the same four-state table as monochrome.
  • AND=1 with a non-zero colour pixel is invert, not transparent. The old helper dropped those pixels, so the client installed a fully-transparent pointer over every text field.
  • Same invert-to-black + white-outline approximation as the monochrome converter, with tests. Confirmed on glass after deploying the host.

Test plan

  • Hover text on a Windows host (Notepad / browser) — I-beam stays visible
  • Arrow / hand / resize still look right
  • cargo test -p pf-capture --lib a_masked_color (Windows)
## Summary - Alpha-less colour cursors (Windows 11 coloured I-beam, some high-DPI system cursors) use the AND mask plus the colour bitmap as XOR — the same four-state table as monochrome. - AND=1 with a non-zero colour pixel is invert, not transparent. The old helper dropped those pixels, so the client installed a fully-transparent pointer over every text field. - Same invert-to-black + white-outline approximation as the monochrome converter, with tests. Confirmed on glass after deploying the host. ## Test plan - [x] Hover text on a Windows host (Notepad / browser) — I-beam stays visible - [x] Arrow / hand / resize still look right - [ ] `cargo test -p pf-capture --lib a_masked_color` (Windows)
HitFrostbite added 1 commit 2026-08-16 16:52:03 +00:00
fix(capture/windows): a masked-color I-beam was forwarded as a fully transparent pointer
ci / web (pull_request) Successful in 1m1s
ci / rust-arm64 (pull_request) Failing after 3m58s
ci / bun-nix (pull_request) Successful in 7m24s
ci / docs-site (pull_request) Successful in 8m35s
ci / rust (pull_request) Failing after 9m18s
android / android (pull_request) Failing after 55s
639886357d
AND=1 plus a non-zero colour pixel is invert, not transparent. Treating it as a simple alpha mask dropped the text cursor, so the client installed nothing over every text field.

Co-authored-by: Cursor <cursoragent@cursor.com>
enricobuehler merged commit bb94dce7b0 into main 2026-08-16 19:58:31 +00:00
enricobuehler deleted branch worktree-windows-masked-color-ibeam 2026-08-16 19:58:32 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unom/punktfunk#270