Skip to content

Commit

Permalink
Merge pull request #13 from tmirkovic/tm/fix-ios
Browse files Browse the repository at this point in the history
Try to fix iOS touch not being detected
  • Loading branch information
robertrosman authored Aug 21, 2024
2 parents a604d2a + 96296ff commit 06e4ae2
Showing 1 changed file with 15 additions and 5 deletions.
20 changes: 15 additions & 5 deletions src/composables/useDraw.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { snapToAngle } from '@/utils/snapToAngle'
import { type Position, usePointer, useElementBounding, type MaybeElement } from '@vueuse/core'
import { type Position, usePointer, useMousePressed, useElementBounding, type MaybeElement } from '@vueuse/core'
import { computed, reactive, ref, watchEffect, type Ref } from 'vue'

export interface UseDrawOptions {
Expand All @@ -24,7 +24,10 @@ export function useDraw({
height,
snapAngles
}: UseDrawOptions) {
const { x: absoluteX, y: absoluteY, pressure } = usePointer()
const { x: absoluteX, y: absoluteY, pressure: pointerPressure } = usePointer()

const { pressed, sourceType } = useMousePressed()

const {
top,
left,
Expand Down Expand Up @@ -73,8 +76,15 @@ export function useDraw({
absoluteY.value === lastPos.y &&
(left.value !== lastPos.left || top.value !== lastPos.top)

let pressure = pointerPressure.value

// For iOS not sending pressure on touch
if(pointerPressure.value === 0 && pressed.value && sourceType.value === 'touch') {
pressure = 0.5
}

if (
pressure.value &&
pressure &&
!isDrawing.value &&
isInside.value &&
isMoving.value &&
Expand All @@ -89,11 +99,11 @@ export function useDraw({
posEnd.x = x.value
posEnd.y = y.value
onDrawStart?.()
} else if (pressure.value && isDrawing.value) {
} else if (pressure && isDrawing.value) {
posEnd.x = x.value
posEnd.y = y.value
onDraw?.()
} else if (!pressure.value && isDrawing.value) {
} else if (!pressure && isDrawing.value) {
isDrawing.value = false
isDrawingSomewhere = false
onDrawEnd?.()
Expand Down

0 comments on commit 06e4ae2

Please sign in to comment.