Describe what waits for the end of a drag (#394)

- Architecture: a drag's frame skips the hidden Scene view and the
  preloading of files, with the numbers measured.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-10-10 19:46:18 +02:00
1 parent 2a682acade
commit 5a21c020e7
1 file changed
+8
+8
@@ -523,6 +523,14 @@ own pause and round trip are in every number). The Texture tab had been paying t
last pointer move a few milliseconds later to update hover, with the same native event, and
each one ran a full preview.
**What nobody sees waits for the end of the drag** (#394). While `FramePreview` announces its
frame, `isDragFrame()` is true. Two listeners of the `project` event skip that frame: the Scene
view behind another tab, which remembers it and draws on coming back (as it does while a game
runs, #265), and `preloadProjectFiles`, which walks every asset. The command that ends the drag
emits for itself, and a drag that changes nothing ends with a plain `state.preview()`, so both
catch up then. Measured on a copy of a project with 162 assets, a band of a Parametric EQ dragged
at 250 pointer moves a second: 17 ms of listeners per frame before, 7.4 ms after.
The inspector's rows and the gradient bar's colour stops go the same way (#274). `previewingHandlers`
asks for the frame on every input, whether scrubbed, typed or picked, and cancels it before the
command; the bar's `preview` handler in `shapeSection.ts` does the same. Both had been paying twice