Pārlūkot izejas kodu

Ensure arrows are not draggable from inside (#1620)

Preet 5 gadi atpakaļ
vecāks
revīzija
584e4182a7
2 mainītis faili ar 12 papildinājumiem un 11 dzēšanām
  1. 3 0
      src/element/collision.ts
  2. 9 11
      src/renderer/renderElement.ts

+ 3 - 0
src/element/collision.ts

@@ -23,6 +23,9 @@ const isElementDraggableFromInside = (
   element: NonDeletedExcalidrawElement,
   appState: AppState,
 ): boolean => {
+  if (element.type === "arrow") {
+    return false;
+  }
   const dragFromInside =
     element.backgroundColor !== "transparent" ||
     appState.selectedElementIds[element.id];

+ 9 - 11
src/renderer/renderElement.ts

@@ -192,22 +192,20 @@ export const generateRoughOptions = (element: ExcalidrawElement): Options => {
       return options;
     }
     case "line":
-    case "draw":
-    case "arrow": {
+    case "draw": {
       // If shape is a line and is a closed shape,
       // fill the shape if a color is set.
-      if (element.type === "line" || element.type === "draw") {
-        if (isPathALoop(element.points)) {
-          options.fillStyle = element.fillStyle;
-          options.fill =
-            element.backgroundColor === "transparent"
-              ? undefined
-              : element.backgroundColor;
-        }
+      if (isPathALoop(element.points)) {
+        options.fillStyle = element.fillStyle;
+        options.fill =
+          element.backgroundColor === "transparent"
+            ? undefined
+            : element.backgroundColor;
       }
-
       return options;
     }
+    case "arrow":
+      return options;
     default: {
       throw new Error(`Unimplemented type ${element.type}`);
     }