diff options
author | andrewdkim <adkim414@gmail.com> | 2020-02-11 19:55:21 -0500 |
---|---|---|
committer | andrewdkim <adkim414@gmail.com> | 2020-02-11 19:55:21 -0500 |
commit | 45de2817224d06ab83f81ceb372c40f4c9185d2e (patch) | |
tree | 2d3e4d318729c818bcf67a1ca54295636229923f | |
parent | 6c379d0f45a4639484f93ca3416f7e6cf601e443 (diff) |
bugfixing event handlers
-rw-r--r-- | src/client/util/SelectionManager.ts | 1 | ||||
-rw-r--r-- | src/client/views/GestureOverlay.tsx | 36 | ||||
-rw-r--r-- | src/client/views/Touchable.tsx | 4 | ||||
-rw-r--r-- | src/client/views/nodes/DocumentView.tsx | 25 |
4 files changed, 44 insertions, 22 deletions
diff --git a/src/client/util/SelectionManager.ts b/src/client/util/SelectionManager.ts index 86a7a620e..4fd8abb12 100644 --- a/src/client/util/SelectionManager.ts +++ b/src/client/util/SelectionManager.ts @@ -56,6 +56,7 @@ export namespace SelectionManager { export function SelectDoc(docView: DocumentView, ctrlPressed: boolean): void { manager.SelectDoc(docView, ctrlPressed); } + export function IsSelected(doc: DocumentView, outsideReaction?: boolean): boolean { return outsideReaction ? diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx index 08083c259..16580ca67 100644 --- a/src/client/views/GestureOverlay.tsx +++ b/src/client/views/GestureOverlay.tsx @@ -28,6 +28,8 @@ import { List } from "../../new_fields/List"; import { CollectionViewType } from "./collections/CollectionView"; import TouchScrollableMenu, { TouchScrollableMenuItem } from "./TouchScrollableMenu"; import { RadialMenu } from "./nodes/RadialMenu"; +import { SelectionManager } from "../util/SelectionManager"; + @observer export default class GestureOverlay extends Touchable { @@ -105,15 +107,14 @@ export default class GestureOverlay extends Touchable { } onReactTouchStart = (te: React.TouchEvent) => { - console.log("STARTING"); - console.log(te.touches); - // if (RadialMenu.Instance._display === true) { - // console.log("display", RadialMenu.Instance._display); - // runInAction(() => { RadialMenu.Instance._display = false; }); - // te.preventDefault(); - // te.stopPropagation(); - // return; - // } + document.removeEventListener("touchmove", this.onReactHoldTouchMove); + document.removeEventListener("touchend", this.onReactHoldTouchEnd); + if (RadialMenu.Instance._display === true) { + te.preventDefault(); + te.stopPropagation(); + RadialMenu.Instance.closeMenu(); + return; + } const actualPts: React.Touch[] = []; for (let i = 0; i < te.touches.length; i++) { @@ -138,7 +139,6 @@ export default class GestureOverlay extends Touchable { ptsToDelete.forEach(pt => this.prevPoints.delete(pt)); const nts = this.getNewTouches(te); - console.log(this.prevPoints.size, nts.ntt.length, nts.nt.length, nts.nct.length); if (nts.nt.length < 5) { const target = document.elementFromPoint(te.changedTouches.item(0).clientX, te.changedTouches.item(0).clientY); console.log(te.touches); @@ -156,13 +156,11 @@ export default class GestureOverlay extends Touchable { } ) ); - console.log("2"); if (nts.nt.length === 1) { console.log("started"); this._holdTimer = setTimeout(() => { console.log("hold"); const target = document.elementFromPoint(te.changedTouches.item(0).clientX, te.changedTouches.item(0).clientY); - console.log(this.prevPoints.size, nts.ntt.length, nts.nt.length, nts.nct.length); let pt: any = te.touches[te.touches.length - 1]; if (nts.nt.length === 1 && pt.radiusX > 1 && pt.radiusY > 1) { target?.dispatchEvent( @@ -206,10 +204,15 @@ export default class GestureOverlay extends Touchable { } onReactHoldTouchMove = (e: TouchEvent) => { + document.removeEventListener("touchmove", this.onReactTouchMove); + document.removeEventListener("touchend", this.onReactTouchEnd); + document.removeEventListener("touchmove", this.onReactHoldTouchMove); + document.removeEventListener("touchend", this.onReactHoldTouchEnd); + document.addEventListener("touchmove", this.onReactHoldTouchMove); + document.addEventListener("touchend", this.onReactHoldTouchEnd); const nts: any = this.getNewTouches(e); if (this.prevPoints.size === 1 && this._holdTimer) { clearTimeout(this._holdTimer); - this._holdTimer = undefined; } document.dispatchEvent( new CustomEvent<InteractionUtils.MultiTouchEvent<TouchEvent>>("dashOnTouchHoldMove", @@ -254,10 +257,9 @@ export default class GestureOverlay extends Touchable { } } - if (this.prevPoints.size === 0) { - document.removeEventListener("touchmove", this.onReactTouchMove); - document.removeEventListener("touchend", this.onReactTouchEnd); - } + document.removeEventListener("touchmove", this.onReactHoldTouchMove); + document.removeEventListener("touchend", this.onReactHoldTouchEnd); + e.stopPropagation(); } diff --git a/src/client/views/Touchable.tsx b/src/client/views/Touchable.tsx index 13cc38589..bc3d07130 100644 --- a/src/client/views/Touchable.tsx +++ b/src/client/views/Touchable.tsx @@ -221,8 +221,8 @@ export abstract class Touchable<T = {}> extends React.Component<T> { handle1PointerHoldMove = (e: Event, me: InteractionUtils.MultiTouchEvent<TouchEvent>): void => { - e.stopPropagation(); - me.touchEvent.stopPropagation(); + // e.stopPropagation(); + // me.touchEvent.stopPropagation(); } diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx index ff627fbc2..572b81b19 100644 --- a/src/client/views/nodes/DocumentView.tsx +++ b/src/client/views/nodes/DocumentView.tsx @@ -126,6 +126,11 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu handle1PointerHoldStart = (e: Event, me: InteractionUtils.MultiTouchEvent<React.TouchEvent>): any => { + this.removeMoveListeners(); + this.removeEndListeners(); + document.removeEventListener("pointermove", this.onPointerMove); + document.removeEventListener("pointerup", this.onPointerUp); + console.log(SelectionManager.SelectedDocuments()); console.log("START"); if (RadialMenu.Instance._display === false) { this.addHoldMoveListeners(); @@ -139,6 +144,8 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu } handle1PointerHoldMove = (e: Event, me: InteractionUtils.MultiTouchEvent<TouchEvent>): void => { + console.log(SelectionManager.SelectedDocuments()); + console.log(SelectionManager.GetIsDragging(), this); const pt = me.touchEvent.touches[me.touchEvent.touches.length - 1]; if (this._firstX === -1 || this._firstY === -1) { @@ -150,9 +157,17 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu } handle1PointerHoldEnd = (e: Event, me: InteractionUtils.MultiTouchEvent<TouchEvent>): void => { + this.removeHoldMoveListeners(); + this.removeHoldEndListeners(); RadialMenu.Instance.closeMenu(); this._firstX = -1; this._firstY = -1; + SelectionManager.DeselectAll(); + me.touchEvent.stopPropagation(); + me.touchEvent.preventDefault(); + e.stopPropagation(); + + } @action @@ -169,9 +184,11 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu RadialMenu.Instance.addItem({ description: "Open in a new tab", event: () => this.props.addDocTab(this.props.Document, undefined, "onRight"), icon: "trash", selected: -1 }); RadialMenu.Instance.addItem({ description: "Pin to Presentation", event: () => this.props.pinToPres(this.props.Document), icon: "folder", selected: -1 }); - if (!SelectionManager.IsSelected(this, true)) { - SelectionManager.SelectDoc(this, false); - } + // if (SelectionManager.IsSelected(this, true)) { + // SelectionManager.SelectDoc(this, false); + // } + SelectionManager.DeselectAll(); + } @@ -320,8 +337,10 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu } handle1PointerDown = (e: React.TouchEvent, me: InteractionUtils.MultiTouchEvent<React.TouchEvent>) => { + SelectionManager.DeselectAll(); if (this.Document.onPointerDown) return; const touch = InteractionUtils.GetMyTargetTouches(me, this.prevPoints, true)[0]; + console.log("DOWN", SelectionManager.SelectedDocuments()); console.log("down"); if (touch) { this._downX = touch.clientX; |