Skip to content

feat(cua-driver): add multi-display cursor support for macos - #3019

Open
injaneity wants to merge 10 commits into
mainfrom
codex/fix-2992-negative-cursor
Open

feat(cua-driver): add multi-display cursor support for macos#3019
injaneity wants to merge 10 commits into
mainfrom
codex/fix-2992-negative-cursor

Conversation

@injaneity

@injaneity injaneity commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

summary

  • make negative macos cursor coordinates valid
  • create one cursor surface per connected display
  • render each surface with its display origin and backing scale
  • rebuild surfaces after display changes and reject stale frames

implementation

macos keeps one shared cursor state and render worker, while appkit owns one transparent surface per display. cursor artwork is rendered into every display it intersects, so seam crossings do not clip the pointer. only displays with current or previous pixels are rendered, which also clears the old display after movement.

placement is explicit instead of encoded as a coordinate. theme-derived paint bounds select intersecting displays without rendering every display for custom themes. the session badge remains on the cursor's anchor display, and target-relative z-order applies to every surface carrying cursor pixels.

validation

  • cargo test -p cursor-overlay --locked — 43 passed
  • cargo test -p platform-macos --lib --locked — 350 passed, 1 environment-mutating test ignored
  • cargo test -p platform-linux --lib --locked — 16 host-available tests passed
  • cargo test -p platform-windows --lib --locked — 42 host-available tests passed
  • cross-platform cargo checks passed
  • rustfmt and diff checks passed

gap before readiness

the candidate still needs live macos validation with left, upper, mixed-scale, cross-display, and hotplug layouts. the pr remains draft until that evidence exists.

refs #2992

@injaneity
injaneity force-pushed the codex/fix-2992-negative-cursor branch from 1d47998 to 2b668df Compare August 20, 2026 01:29
@injaneity
injaneity marked this pull request as draft August 20, 2026 01:53
@injaneity injaneity changed the title fix(cua-driver): render cursors at negative display coordinates fix(cua-driver): render cursors on every display Aug 20, 2026
@injaneity injaneity changed the title fix(cua-driver): render cursors on every display feat(cua-driver): add multi-display cursor support for macos Aug 20, 2026
@injaneity
injaneity marked this pull request as ready for review August 20, 2026 04:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant