Logo FS-Skia-UI

Controls Gallery — Pointer Playground & Custom Page Spec

Inherits the shell, palette, pointer contract, keyboard contract, and determinism rules from 00-controls-gallery-overview.md.

Goal

Give the full mouse/pointer event surface a dedicated home and demonstrate the custom-control wrapper hosting bespoke Skia content driven directly by pointer samples — every PointerInteraction case made visible and measurable.

Controls Demonstrated

Control

Module

Required

Events

Demonstrates

custom-control

CustomControl

onCustom

Product-owned Skia surface fed raw pointer input

This page is also the reference exercise for the entire pointer pipeline (src/Controls/Pointer.fsi): HoverEnter/HoverLeave, PressedDown/ReleasedUp, Click, DragBegin/DragMove/DragEnd, DragCancelled, Scroll, FocusMovedByPointer, and the three PointerButtons.

User Experience

A large interactive canvas (a CustomControl) fills the page. The user moves the pointer to leave a live crosshair and trail, presses and drags to draw or move draggable tokens, wheel-scrolls to zoom, secondary-clicks to open a context menu, and middle-clicks to drop a marker. An event inspector lists the most recent raw pointer interactions with their coordinates, button, and deltas, proving the full event surface end-to-end.

Layout

Mouse & Pointer Interactions

This page must surface every pointer case explicitly:

Every interaction the canvas receives is appended to the event inspector and mirrored in the shell status strip.

Keyboard

Core Behaviors

Data Model

Visual / Palette Requirements

App State

Track: tokens and their positions/selection; canvas transform; trail and markers; pointer snapshot; interaction log; context-menu state; seed for initial token placement.

Determinism and Evidence

Acceptance Criteria

Out of Scope

Type something to start searching.