Browse Source

Fix binding disabling when taking screenshots on macOS (#2129)

* Fix binding disabling when taking screenshots on macOS
* Update snapshot for cmd+click test
Michal Srb 4 years ago
parent
commit
15e4b51bb1

+ 11 - 0
src/components/App.tsx

@@ -171,6 +171,7 @@ import {
   isLinearElementSimpleAndAlreadyBound,
   isBindingEnabled,
   updateBoundElements,
+  shouldEnableBindingForPointerEvent,
 } from "../element/binding";
 import { MaybeTransformHandleType } from "../element/transformHandles";
 
@@ -2220,6 +2221,7 @@ class App extends React.Component<ExcalidrawProps, AppState> {
     }
 
     this.clearSelectionIfNotUsingSelection();
+    this.updateBindingEnabledOnPointerMove(event);
 
     if (this.handleSelectionOnPointerDown(event, pointerDownState)) {
       return;
@@ -3484,6 +3486,15 @@ class App extends React.Component<ExcalidrawProps, AppState> {
     });
   }
 
+  private updateBindingEnabledOnPointerMove = (
+    event: React.PointerEvent<HTMLCanvasElement>,
+  ) => {
+    const shouldEnableBinding = shouldEnableBindingForPointerEvent(event);
+    if (this.state.isBindingEnabled !== shouldEnableBinding) {
+      this.setState({ isBindingEnabled: shouldEnableBinding });
+    }
+  };
+
   private maybeSuggestBindingAtCursor = (pointerCoords: {
     x: number;
     y: number;

+ 7 - 0
src/element/binding.ts

@@ -21,6 +21,7 @@ import { mutateElement } from "./mutateElement";
 import Scene from "../scene/Scene";
 import { LinearElementEditor } from "./linearElementEditor";
 import { tupleToCoors } from "../utils";
+import { KEYS } from "../keys";
 
 export type SuggestedBinding =
   | NonDeleted<ExcalidrawBindableElement>
@@ -32,6 +33,12 @@ export type SuggestedPointBinding = [
   NonDeleted<ExcalidrawBindableElement>,
 ];
 
+export const shouldEnableBindingForPointerEvent = (
+  event: React.PointerEvent<HTMLCanvasElement>,
+) => {
+  return !event[KEYS.CTRL_OR_CMD];
+};
+
 export const isBindingEnabled = (appState: AppState): boolean => {
   return appState.isBindingEnabled;
 };

+ 1 - 1
src/tests/__snapshots__/regressionTests.test.tsx.snap

@@ -907,7 +907,7 @@ Object {
   "exportBackground": true,
   "gridSize": null,
   "height": 768,
-  "isBindingEnabled": true,
+  "isBindingEnabled": false,
   "isCollaborating": false,
   "isLibraryOpen": false,
   "isLoading": false,