Jelajahi Sumber

fix: bounds cached prematurely resulting in incorrectly rendered labels (#7339)

David Luzar 1 tahun lalu
induk
melakukan
dd8a7d41e2
1 mengubah file dengan 12 tambahan dan 4 penghapusan
  1. 12 4
      src/element/bounds.ts

+ 12 - 4
src/element/bounds.ts

@@ -22,6 +22,7 @@ import { getBoundTextElement, getContainerElement } from "./textElement";
 import { LinearElementEditor } from "./linearElementEditor";
 import { Mutable } from "../utility-types";
 import { ShapeCache } from "../scene/ShapeCache";
+import Scene from "../scene/Scene";
 
 export type RectangleBox = {
   x: number;
@@ -59,10 +60,17 @@ export class ElementBounds {
 
     const bounds = ElementBounds.calculateBounds(element);
 
-    ElementBounds.boundsCache.set(element, {
-      version: element.version,
-      bounds,
-    });
+    // hack to ensure that downstream checks could retrieve element Scene
+    // so as to have correctly calculated bounds
+    // FIXME remove when we get rid of all the id:Scene / element:Scene mapping
+    const shouldCache = Scene.getScene(element);
+
+    if (shouldCache) {
+      ElementBounds.boundsCache.set(element, {
+        version: element.version,
+        bounds,
+      });
+    }
 
     return bounds;
   }