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
vanilla_orig
Michal Srb 5 years ago
parent
commit
15e4b51bb1
No account linked to committer's email address

+ 11
- 0
src/components/App.tsx View File

171
   isLinearElementSimpleAndAlreadyBound,
171
   isLinearElementSimpleAndAlreadyBound,
172
   isBindingEnabled,
172
   isBindingEnabled,
173
   updateBoundElements,
173
   updateBoundElements,
174
+  shouldEnableBindingForPointerEvent,
174
 } from "../element/binding";
175
 } from "../element/binding";
175
 import { MaybeTransformHandleType } from "../element/transformHandles";
176
 import { MaybeTransformHandleType } from "../element/transformHandles";
176
 
177
 
2220
     }
2221
     }
2221
 
2222
 
2222
     this.clearSelectionIfNotUsingSelection();
2223
     this.clearSelectionIfNotUsingSelection();
2224
+    this.updateBindingEnabledOnPointerMove(event);
2223
 
2225
 
2224
     if (this.handleSelectionOnPointerDown(event, pointerDownState)) {
2226
     if (this.handleSelectionOnPointerDown(event, pointerDownState)) {
2225
       return;
2227
       return;
3484
     });
3486
     });
3485
   }
3487
   }
3486
 
3488
 
3489
+  private updateBindingEnabledOnPointerMove = (
3490
+    event: React.PointerEvent<HTMLCanvasElement>,
3491
+  ) => {
3492
+    const shouldEnableBinding = shouldEnableBindingForPointerEvent(event);
3493
+    if (this.state.isBindingEnabled !== shouldEnableBinding) {
3494
+      this.setState({ isBindingEnabled: shouldEnableBinding });
3495
+    }
3496
+  };
3497
+
3487
   private maybeSuggestBindingAtCursor = (pointerCoords: {
3498
   private maybeSuggestBindingAtCursor = (pointerCoords: {
3488
     x: number;
3499
     x: number;
3489
     y: number;
3500
     y: number;

+ 7
- 0
src/element/binding.ts View File

21
 import Scene from "../scene/Scene";
21
 import Scene from "../scene/Scene";
22
 import { LinearElementEditor } from "./linearElementEditor";
22
 import { LinearElementEditor } from "./linearElementEditor";
23
 import { tupleToCoors } from "../utils";
23
 import { tupleToCoors } from "../utils";
24
+import { KEYS } from "../keys";
24
 
25
 
25
 export type SuggestedBinding =
26
 export type SuggestedBinding =
26
   | NonDeleted<ExcalidrawBindableElement>
27
   | NonDeleted<ExcalidrawBindableElement>
32
   NonDeleted<ExcalidrawBindableElement>,
33
   NonDeleted<ExcalidrawBindableElement>,
33
 ];
34
 ];
34
 
35
 
36
+export const shouldEnableBindingForPointerEvent = (
37
+  event: React.PointerEvent<HTMLCanvasElement>,
38
+) => {
39
+  return !event[KEYS.CTRL_OR_CMD];
40
+};
41
+
35
 export const isBindingEnabled = (appState: AppState): boolean => {
42
 export const isBindingEnabled = (appState: AppState): boolean => {
36
   return appState.isBindingEnabled;
43
   return appState.isBindingEnabled;
37
 };
44
 };

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

907
   "exportBackground": true,
907
   "exportBackground": true,
908
   "gridSize": null,
908
   "gridSize": null,
909
   "height": 768,
909
   "height": 768,
910
-  "isBindingEnabled": true,
910
+  "isBindingEnabled": false,
911
   "isCollaborating": false,
911
   "isCollaborating": false,
912
   "isLibraryOpen": false,
912
   "isLibraryOpen": false,
913
   "isLoading": false,
913
   "isLoading": false,

Loading…
Cancel
Save