rust-windowing / rust-windowing/winit

Custom cursor tracking issue

Open
#3,306 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

S - meta
Dominant language
Rust
Stars
6.2k
Forks
1.3k
Avg merge
2d 19h
Merged PRs (30d)
9

Description

Custom cursors are still missing some refinements.

Known Issues
  • On Web, correctly handle multiple windows waiting on the same cursor: #3321.
  • On Wayland, account for alpha: #3360.
  • Figure out how to prevent CustomCursors to outlive the event loop. This is similar to #3317 and #3258.
Improvements
  • Add back Window::set_cursor_icon() as a deprecated method: #3329.
  • Merge icons and cursors in one type and one method: https://github.com/rust-windowing/winit/pull/3308.
  • Add a cursor getter/setter on WindowBuilder: #3319.
  • Add a cursor getter on Window.
  • Make sure implementations check if the new cursor being set isn't the same already set.
    • MacOS: #3324.
    • Wayland
    • Web: #3321.
    • Windows
    • X11
  • Return a Result at CustomCursorBuilder::build(), AFAIK only Windows needs it.
  • On Windows, extension method to load from a resource, like in Icon::from_resource().
  • On Web, async fn build() extension method to wait until the cursor has successfully finished loading: #3384.
Caching
  • MacOS: #3291
  • Wayland
  • Web: #3276
  • Windows: #3293
  • X11: #3366
Animation
  • Web: #3384
  • Windows: support ANI files (loaded from memory or otherwise).
  • MacOS: Use NSTimer? (idea from Firefox)
  • X11: XcursorAnimate

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the custom cursor entry points, including CustomCursorBuilder::build and Window, then compare the Wayland, Windows, and X11 implementations against the unchecked items. Choose one specific checklist item before investigating the relevant platform code; done means that item is implemented and its behavior is covered by the project’s existing checks.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.