Browse Source

Fixed viewer.click event

David Sehnal 6 years ago
parent
commit
69821ac04e
2 changed files with 6 additions and 3 deletions
  1. 1 0
      src/mol-app/ui/visualization/viewport.tsx
  2. 5 3
      src/mol-util/input/input-observer.ts

+ 1 - 0
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);

+ 5 - 3
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