diff --git a/src/components/App.tsx b/src/components/App.tsx
index ef89c646..f49c0ca3 100644
--- a/src/components/App.tsx
+++ b/src/components/App.tsx
@@ -5035,6 +5035,16 @@ class App extends React.Component<AppProps, AppState> {
   ) => {
     event.preventDefault();
 
+    if (
+      (event.nativeEvent.pointerType === "touch" ||
+        (event.nativeEvent.pointerType === "pen" &&
+          // always allow if user uses a pen secondary button
+          event.button !== POINTER_BUTTON.SECONDARY)) &&
+      this.state.elementType !== "selection"
+    ) {
+      return;
+    }
+
     const { x, y } = viewportCoordsToSceneCoords(event, this.state);
     const element = this.getElementAtPosition(x, y, { preferSelected: true });
 
diff --git a/src/constants.ts b/src/constants.ts
index e27044f9..c5a8afb8 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -24,7 +24,7 @@ export const POINTER_BUTTON = {
   WHEEL: 1,
   SECONDARY: 2,
   TOUCH: -1,
-};
+} as const;
 
 export enum EVENT {
   COPY = "copy",