From 6e413ccfa1799d0ca98adba8e542398591931fb9 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sun, 17 May 2026 01:59:17 +0300 Subject: [PATCH] fix(canvas): repaint scene during live transforms --- packages/core/src/canvas/labels/cache.ts | 4 ++-- packages/core/src/canvas/labels/hit-test.ts | 4 ++-- packages/vue/src/canvas/surface/render-loop.ts | 8 +------- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/packages/core/src/canvas/labels/cache.ts b/packages/core/src/canvas/labels/cache.ts index fee16ebfb..3d7b1fb9d 100644 --- a/packages/core/src/canvas/labels/cache.ts +++ b/packages/core/src/canvas/labels/cache.ts @@ -93,8 +93,8 @@ export class LabelCache { graph: SceneGraph, viewport: Viewport ): Array<{ node: SceneNode; absX: number; absY: number; inside: boolean }> { - return collectVisibleLabels(graph, viewport, this.components, (cached) => ({ - inside: cached.parentType === 'COMPONENT_SET' + return collectVisibleLabels(graph, viewport, this.components, () => ({ + inside: false })) } diff --git a/packages/core/src/canvas/labels/hit-test.ts b/packages/core/src/canvas/labels/hit-test.ts index 7753279ea..a5ac10455 100644 --- a/packages/core/src/canvas/labels/hit-test.ts +++ b/packages/core/src/canvas/labels/hit-test.ts @@ -112,14 +112,14 @@ export function hitTestComponentLabel( const LABEL_TYPES = new Set(['COMPONENT', 'COMPONENT_SET']) - return walkLabelTree(graph, pageId, (child, parent, ax, ay) => { + return walkLabelTree(graph, pageId, (child, _parent, ax, ay) => { if (!LABEL_TYPES.has(child.type)) return undefined const textW = measureGlyphWidth(font, child.name) const labelW = (COMPONENT_LABEL_ICON_SIZE + COMPONENT_LABEL_ICON_GAP + textW) / zoom const labelH = COMPONENT_LABEL_FONT_SIZE / zoom const gap = COMPONENT_LABEL_GAP / zoom - const labelY = parent.type === 'COMPONENT_SET' ? ay + gap : ay - labelH - gap + const labelY = ay - labelH - gap return hitInRect(canvasX, canvasY, ax, labelY, labelW, labelH) ? child : undefined }) diff --git a/packages/vue/src/canvas/surface/render-loop.ts b/packages/vue/src/canvas/surface/render-loop.ts index cdad0b818..0b0b1e994 100644 --- a/packages/vue/src/canvas/surface/render-loop.ts +++ b/packages/vue/src/canvas/surface/render-loop.ts @@ -46,10 +46,6 @@ function getRenderScheduler(editor: Editor): EditorRenderScheduler { return scheduler } -function shouldScheduleForRepaint(layer: CanvasRenderLayer | undefined) { - return layer !== 'scene' -} - function shouldScheduleForSelection(layer: CanvasRenderLayer | undefined) { return layer !== 'scene' } @@ -92,9 +88,7 @@ export function createCanvasRenderLoop( editor.onEditorEvent('viewport:changed', scheduleRender) ] - if (shouldScheduleForRepaint(options.layer)) { - unsubscribe.push(editor.onEditorEvent('repaint:requested', scheduleRender)) - } + unsubscribe.push(editor.onEditorEvent('repaint:requested', scheduleRender)) if (shouldScheduleForSelection(options.layer)) { unsubscribe.push(editor.onEditorEvent('selection:changed', scheduleRender))