diff --git a/src/mol-app/ui/visualization/viewport.tsx b/src/mol-app/ui/visualization/viewport.tsx index 902882921bd471e896e290f71a0e8942bef3c8f1..11fef7e54188e2e620b476cf69adcdc15f618a4b 100644 --- a/src/mol-app/ui/visualization/viewport.tsx +++ b/src/mol-app/ui/visualization/viewport.tsx @@ -170,6 +170,7 @@ export class Viewport extends View<ViewportController, ViewportState, { noWebGl? this.setState({ info }) }) + // TODO filter only for left button? viewer.input.click.subscribe(({x, y}) => { const loci = viewer.getLoci(viewer.identify(x, y)) InteractivityEvents.SelectLoci.dispatch(this.controller.context, loci); diff --git a/src/mol-util/input/input-observer.ts b/src/mol-util/input/input-observer.ts index b1f7073cf5858f442cca6e071160faeea6ec8717..f622969cf430a93fc288f0f899c0278cbfdb83fa 100644 --- a/src/mol-util/input/input-observer.ts +++ b/src/mol-util/input/input-observer.ts @@ -145,6 +145,7 @@ namespace InputObserver { const lineHeight = toPixels('ex', element) let lastTouchDistance = 0 + const pointerDown = Vec2.zero() const pointerStart = Vec2.zero() const pointerEnd = Vec2.zero() const pointerDelta = Vec2.zero() @@ -334,6 +335,8 @@ namespace InputObserver { function onPointerDown (ev: PointerEvent) { eventOffset(pointerStart, ev) + Vec2.copy(pointerDown, pointerStart) + if (insideBounds(pointerStart)) { dragging = DraggingState.Started } @@ -342,9 +345,8 @@ namespace InputObserver { function onPointerUp (ev: PointerEvent) { dragging = DraggingState.Stopped - if (Vec2.distance(pointerEnd, pointerStart) < 4) { - eventOffset(pointerEnd, ev) - + eventOffset(pointerEnd, ev); + if (Vec2.distance(pointerEnd, pointerDown) < 4) { const { pageX, pageY } = ev const [ x, y ] = pointerEnd