# refactor: move page interaction from the snowbound host into canvas · clo/snowbound

[View on GitCafe](https://git.cafe/clo/snowbound/commit/1b0d6e5c862e65471df75c1239a1a111b9c11302)

Repository: [clo/snowbound](https://git.cafe/clo/snowbound)

Visibility: public

Requested revision: 1b0d6e5c862e65471df75c1239a1a111b9c11302

Requested commit: 1b0d6e5c862e65471df75c1239a1a111b9c11302

Commit: 1b0d6e5c862e65471df75c1239a1a111b9c11302

Tree: bf5201a6d1ad36b0748cf5b351f0d1b9261d2f73

Author: clover caruso

Committer: clover caruso

## Message

```
refactor: move page interaction from the snowbound host into canvas

Hit layers, drags, the placement grid, picture handles, outline and picture chrome, key
routing, scrolling, zoom, caret blink and the AccessKit tree lived in the winit host, mixed
with window plumbing. They now live in canvas::interaction as PageView: hosts translate
their events into its calls, carry out the requests it returns (date picker, clipboard,
character picker) and follow its changes. Snowbound keeps the window, surface, AppKit
pickers, clipboard and saving, and shrinks from 3.8k to under 1k lines. Behaviour is
unchanged; the host tests moved with the logic, plus one driving PageView end to end.

Assisted-by: claude-opus-5.5

```

## Parents

- [dc52eff3f6dfc98dc61d48517051cac6ad04d9de](https://git.cafe/clo/snowbound/commit/dc52eff3f6dfc98dc61d48517051cac6ad04d9de?format=markdown)

[Source at this commit](https://git.cafe/clo/snowbound/tree/1b0d6e5c862e65471df75c1239a1a111b9c11302?format=markdown)
