openpencil/tests/engine/render/canvas
Danila Poyarkov a6a87035da
fix(canvas): show every top-level frame's name and select frames by it (#930)
* fix(canvas): show every top-level frame's name and select frames by it

Since clicks follow Figma's depth, the empty part of a top-level frame
that holds layers selects nothing, but a frame's name was drawn and
hit-tested only while that frame was already selected. Once a top-level
frame held layers it could not be selected from the canvas, as when one
frame is dragged into another and the outer frame is then out of reach.

Every frame on the page or in a section now shows its name, faded in
the canvas's text color and in the selection color while selected or
hovered, from the same viewport-culled label catalog as section and
component labels. Its name is a hit target whether or not the frame is
selected, so clicking it selects the frame, dragging it moves the frame,
and hovering it highlights the frame; locked frames stay out of reach.
SkiaRenderer.hitTestFrameTitle no longer takes the selected IDs.

* fix(canvas): draw and hit labels whose node is just outside the view

Label catalogs culled nodes by their own bounds, but frame, section, and
component names sit outside the node, so a node just below the view hid
a name that was on screen and could not be clicked. Label lookups now use
the viewport widened by how far labels reach. Presses and hover also test
component labels, then section titles, then frame names, the reverse of
the order they are drawn, so overlapping labels pick the one on top.
2026-10-06 11:37:46 +00:00
..
chunks test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
effects test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
guides test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
labels fix(canvas): show every top-level frame's name and select frames by it (#930) 2026-10-06 11:37:46 +00:00
tiles test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
visual test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
arrow-heads-draw.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
blend.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
boolean.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
cache.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
component-label-text.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
corner-smoothing.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
culling.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
derived-text.test.ts feat(fig): occurrence-scoped instance interpretation as the single .fig reader 2026-10-01 11:20:27 +04:00
diamond-gradient.test.ts fix(canvas): preserve paint geometry and color fidelity 2026-09-16 02:57:56 +03:00
effect-raster-cache.test.ts refactor(canvas): share bounded resource cache bookkeeping 2026-09-15 21:28:16 +03:00
effect-raster-integration.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
font-readiness.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
gradient.test.ts
helpers.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
image-fill.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
label-cache.test.ts test: align label cache contracts with component members 2026-09-16 16:14:12 +03:00
layout-grids.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
line.test.ts feat(scene-graph)!: make a stroke a paint (#864) 2026-10-04 13:38:05 +04:00
masks.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
measurement.test.ts feat(canvas): measure distances between layers (#515) 2026-08-14 18:18:55 +03:00
normalize-dash-pattern.test.ts fix(canvas): normalize imported dash patterns 2026-08-31 22:25:48 +03:00
painted-text.test.ts test(canvas): load painted-text font fixtures explicitly 2026-09-16 03:27:10 +03:00
picture-invalidation.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
raster-export.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
renderer-lifecycle.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
retained-backing-pixels.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
retained-backing.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
schema-fill-fallback.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
surface-replacement.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
text-font-variations.test.ts fix(text): render variable font styles at their named instances (#773) 2026-09-26 11:25:01 +04:00
text-preparation-cache.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00
text.test.ts fix(fig): write text glyphs from the layout the renderer draws (#928) 2026-10-06 11:37:02 +00:00
variable-modes.test.ts test: typecheck the test suites and fix what that found (#896) 2026-10-05 12:42:38 +00:00