aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBob Zeleznik <zzzman@gmail.com>2020-04-06 00:27:13 -0400
committerBob Zeleznik <zzzman@gmail.com>2020-04-06 00:27:13 -0400
commit9aea1fa2e735aa485d698f374292ffd133eb76f3 (patch)
tree11758ed5f65e65cbabbe3ffe486204b3cb93aabd /src
parentbc23e69a88234c213e444b1aa3c5eb895c35aca9 (diff)
parent43b241a496d446e7b613ad65fb016405009dd532 (diff)
Merge branch 'master' into nativeWidthProps
Diffstat (limited to 'src')
-rw-r--r--src/client/views/GestureOverlay.tsx14
-rw-r--r--src/client/views/nodes/DocumentView.tsx31
2 files changed, 24 insertions, 21 deletions
diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx
index 110b61efe..f0205133c 100644
--- a/src/client/views/GestureOverlay.tsx
+++ b/src/client/views/GestureOverlay.tsx
@@ -193,7 +193,7 @@ export default class GestureOverlay extends Touchable {
}, (500));
}
else {
- clearTimeout(this._holdTimer);
+ this._holdTimer && clearTimeout(this._holdTimer);
}
document.removeEventListener("touchmove", this.onReactTouchMove);
document.removeEventListener("touchend", this.onReactTouchEnd);
@@ -270,7 +270,7 @@ export default class GestureOverlay extends Touchable {
onReactTouchMove = (e: TouchEvent) => {
const nts: any = this.getNewTouches(e);
- clearTimeout(this._holdTimer);
+ this._holdTimer && clearTimeout(this._holdTimer);
this._holdTimer = undefined;
document.dispatchEvent(
@@ -290,7 +290,7 @@ export default class GestureOverlay extends Touchable {
onReactTouchEnd = (e: TouchEvent) => {
const nts: any = this.getNewTouches(e);
- clearTimeout(this._holdTimer);
+ this._holdTimer && clearTimeout(this._holdTimer);
this._holdTimer = undefined;
document.dispatchEvent(
@@ -323,7 +323,7 @@ export default class GestureOverlay extends Touchable {
}
handleHandDown = async (e: React.TouchEvent) => {
- clearTimeout(this._holdTimer!);
+ this._holdTimer && clearTimeout(this._holdTimer);
const fingers = new Array<React.Touch>();
for (let i = 0; i < e.touches.length; i++) {
const pt: any = e.touches.item(i);
@@ -623,7 +623,7 @@ export default class GestureOverlay extends Touchable {
actionPerformed = true;
break;
case GestureUtils.Gestures.EndBracket:
- this.dispatchGesture(GestureUtils.Gestures.EndBracket);
+ this.dispatchGesture("endbracket");
actionPerformed = true;
break;
case GestureUtils.Gestures.Line:
@@ -648,7 +648,7 @@ export default class GestureOverlay extends Touchable {
document.removeEventListener("pointerup", this.onPointerUp);
}
- dispatchGesture = (gesture: GestureUtils.Gestures, stroke?: InkData, data?: any) => {
+ dispatchGesture = (gesture: "box" | "line" | "startbracket" | "endbracket" | "stroke" | "scribble" | "text", stroke?: InkData, data?: any) => {
const target = document.elementFromPoint((stroke ?? this._points)[0].X, (stroke ?? this._points)[0].Y);
target?.dispatchEvent(
new CustomEvent<GestureUtils.GestureEvent>("dashOnGesture",
@@ -656,7 +656,7 @@ export default class GestureOverlay extends Touchable {
bubbles: true,
detail: {
points: stroke ?? this._points,
- gesture: gesture,
+ gesture: gesture as any,
bounds: this.getBounds(stroke ?? this._points),
text: data
}
diff --git a/src/client/views/nodes/DocumentView.tsx b/src/client/views/nodes/DocumentView.tsx
index 32c5a02e5..9ca914bbe 100644
--- a/src/client/views/nodes/DocumentView.tsx
+++ b/src/client/views/nodes/DocumentView.tsx
@@ -674,20 +674,23 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
}
@action
- onContextMenu = async (e: React.MouseEvent): Promise<void> => {
+ onContextMenu = async (e: React.MouseEvent | Touch): Promise<void> => {
// the touch onContextMenu is button 0, the pointer onContextMenu is button 2
- if (e.button === 0 && !e.ctrlKey) {
- e.preventDefault();
- return;
- }
- e.persist();
- e?.stopPropagation();
- if (Math.abs(this._downX - e.clientX) > 3 || Math.abs(this._downY - e.clientY) > 3 ||
- e.isDefaultPrevented()) {
+ if (!(e instanceof Touch)) {
+ if (e.button === 0 && !e.ctrlKey) {
+ e.preventDefault();
+ return;
+ }
+ e.persist();
+ e?.stopPropagation();
+
+ if (Math.abs(this._downX - e.clientX) > 3 || Math.abs(this._downY - e.clientY) > 3 ||
+ e.isDefaultPrevented()) {
+ e.preventDefault();
+ return;
+ }
e.preventDefault();
- return;
}
- e.preventDefault();
const cm = ContextMenu.Instance;
const templateDoc = Cast(this.props.Document[StrCast(this.props.Document.layoutKey)], Doc, null);
@@ -768,7 +771,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
recommender_subitems.push({
description: "Internal recommendations",
- event: () => this.recommender(e),
+ event: () => this.recommender(),
icon: "brain"
});
@@ -829,7 +832,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
icon: "external-link-alt"
});
- if (!this.topMost) {
+ if (!this.topMost && !(e instanceof Touch)) {
// DocumentViews should stop propagation of this event
e.stopPropagation();
}
@@ -847,7 +850,7 @@ export class DocumentView extends DocComponent<DocumentViewProps, Document>(Docu
});
}
- recommender = async (e: React.MouseEvent) => {
+ recommender = async () => {
if (!ClientRecommender.Instance) new ClientRecommender({ title: "Client Recommender" });
const documents: Doc[] = [];
const allDocs = await SearchUtil.GetAllDocs();