فهرست منبع

fix: Allow copy of excalidraw elements only when inside excalidraw (#3206)

* fix: Allow copy event only inside canvas

* use pointerdown

* use document.getSelection

* remove poiterdown

* remove keyTest

* update changelog
Aakansha Doshi 4 سال پیش
والد
کامیت
00ac804dd8
4فایلهای تغییر یافته به همراه10 افزوده شده و 1 حذف شده
  1. 1 1
      src/actions/actionClipboard.tsx
  2. 7 0
      src/components/App.tsx
  3. 1 0
      src/keys.ts
  4. 1 0
      src/packages/excalidraw/CHANGELOG.md

+ 1 - 1
src/actions/actionClipboard.tsx

@@ -17,7 +17,7 @@ export const actionCopy = register({
     };
   },
   contextItemLabel: "labels.copy",
-  keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.code === CODES.C,
+  // Don't assign keyTest since its handled via copy event
 });
 
 export const actionCut = register({

+ 7 - 0
src/components/App.tsx

@@ -1028,6 +1028,13 @@ class App extends React.Component<ExcalidrawProps, AppState> {
   });
 
   private onCopy = withBatchedUpdates((event: ClipboardEvent) => {
+    const activeSelection = document.getSelection();
+    if (
+      activeSelection?.anchorNode &&
+      !this.excalidrawContainerRef.current!.contains(activeSelection.anchorNode)
+    ) {
+      return;
+    }
     if (isWritableElement(event.target)) {
       return;
     }

+ 1 - 0
src/keys.ts

@@ -40,6 +40,7 @@ export const KEYS = {
   TAB: "Tab",
 
   A: "a",
+  C: "c",
   D: "d",
   E: "e",
   L: "l",

+ 1 - 0
src/packages/excalidraw/CHANGELOG.md

@@ -18,6 +18,7 @@ Please add the latest change on the top under the correct section.
 
 ### Fixes
 
+- Allow copy of excalidraw elements only when inside excalidraw [#3206](https://github.com/excalidraw/excalidraw/pull/3206).
 - Position text editor absolute and fix the offsets so it doesn't remain fixed when the container is scrolled [#3200](https://github.com/excalidraw/excalidraw/pull/3200).
 - Scope CSS variables so that host CSS vars don't clash with excalidraw [#3199](https://github.com/excalidraw/excalidraw/pull/3199).