Przeglądaj źródła

fix: Center zoom on iPhone and iPad (#2642)

My last attempt removed the gesture handler altogether but broke macbooks. This one keeps it working on macbook but makes sure it zooms properly on iPhone and iPad.
Christopher Chedeau 4 lat temu
rodzic
commit
9a3a3ecb44
1 zmienionych plików z 10 dodań i 0 usunięć
  1. 10 0
      src/components/App.tsx

+ 10 - 0
src/components/App.tsx

@@ -1426,6 +1426,16 @@ class App extends React.Component<ExcalidrawProps, AppState> {
 
   private onGestureChange = withBatchedUpdates((event: GestureEvent) => {
     event.preventDefault();
+
+    // onGestureChange only has zoom factor but not the center.
+    // If we're on iPad or iPhone, then we recognize multi-touch and will
+    // zoom in at the right location on the touchMove handler already.
+    // On Macbook, we don't have those events so will zoom in at the
+    // current location instead.
+    if (gesture.pointers.size === 2) {
+      return;
+    }
+
     const initialScale = gesture.initialScale;
     if (initialScale) {
       this.setState(({ zoom, offsetLeft, offsetTop }) => ({