Skip to content

Make mouse panning easier to find (1.7.6) - #187

Merged
marcosqlbi merged 1 commit into
mainfrom
feature/pan-discoverability
Oct 20, 2026
Merged

marcosqlbi merged 1 commit into
mainfrom
feature/pan-discoverability

Conversation

@marcosqlbi

Copy link
Copy Markdown
Collaborator

A user asked for an easier way to pan with a mouse, and named H from Figma and Space as the usual conventions. The application already panned with Space, the middle button, the right button, and a Pan button, but nothing on screen showed it: the pointer stayed an arrow, the Pan tooltip said only "Pan", and the mouse-mode notices did not mention panning. Figma, Miro, Canva, and Microsoft Whiteboard all use Space, and Figma and Miro use H for the Pan tool.

What changes

  • Hand cursor. An open hand while Space is held or the Pan tool is active, and a closed hand while the board moves, whichever button or key started the pan. Windows has no grab cursor, so GrabCursors draws both at the monitor's pixel size and encodes them as a .cur in memory. The cursor is refreshed when Space or H is pressed and when a pan ends, because an assigned cursor otherwise appears only at the next mouse move. A pen in range keeps the cursor.
  • H switches to the Pan tool and back to the tool it was chosen from. With one shape selected, H types into the shape, as every other letter does.
  • Space or H with a left drag pans with Mouse drawing off. It used to borrow Select and move containers, so Space only panned with the pen or with Mouse drawing on. A laptop with a touchscreen and no pen has Mouse drawing off by default, which is the likely setup of the user who asked.
  • A mouse pan keeps the selection, as a pen pan already did.
  • Text. The Pan tooltip, both mouse-mode notices, README.md, site/shortcuts.html, and the navigation table in site/guide.html name the ways to pan.

Testing

  • dotnet build Whiteboard.sln -c Release is clean, both smoke harnesses pass, and release-notes.ps1 -Mode Verify -Version 1.7.6 passes.
  • GrabCursorSmokeTests loads both cursors through Windows at five display scales and checks that the hot spot is on the hand and the corners are transparent. SQLBI_WHITEBOARD_GRAB_CURSOR_PREVIEW writes a preview of both hands at three sizes.
  • Not yet checked in the running app, where screenshots do not capture the cursor:
    1. Hold Space over the canvas: the open hand appears without moving the mouse.
    2. Hold Space and left-drag, with Mouse drawing on and off: the hand closes and the board pans.
    3. Release Space: the previous cursor returns.
    4. Press H twice: the original tool is back.
    5. Select a shape and press H: an "h" goes into the shape.
    6. Right-drag with the Eraser selected and Mouse drawing on: the hand closes, and the Eraser is still selected afterwards.

The hand follows the display scale but not the Windows pointer-size accessibility setting.

🤖 Generated with Claude Code

Add a hand cursor for every pan, H to switch to the Pan tool and back,
and name the ways to pan in the Pan tooltip and the mouse-mode notices.
With Mouse drawing off, Space or H with a left drag now pans instead of
moving containers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@marcosqlbi
marcosqlbi merged commit 4cf5355 into main Oct 20, 2026
5 checks passed
@marcosqlbi
marcosqlbi deleted the feature/pan-discoverability branch October 20, 2026 16:36
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