aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/GestureOverlay.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/views/GestureOverlay.tsx')
-rw-r--r--src/client/views/GestureOverlay.tsx69
1 files changed, 21 insertions, 48 deletions
diff --git a/src/client/views/GestureOverlay.tsx b/src/client/views/GestureOverlay.tsx
index 362aa3c86..a29073f14 100644
--- a/src/client/views/GestureOverlay.tsx
+++ b/src/client/views/GestureOverlay.tsx
@@ -16,7 +16,6 @@ import { InteractionUtils } from '../util/InteractionUtils';
import { ScriptingGlobals } from '../util/ScriptingGlobals';
import { SelectionManager } from '../util/SelectionManager';
import { Transform } from '../util/Transform';
-import { CollectionFreeFormViewChrome } from './collections/CollectionMenu';
import './GestureOverlay.scss';
import {
ActiveArrowEnd,
@@ -53,6 +52,7 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
@observable public SavedColor?: string;
@observable public SavedWidth?: number;
@observable public Tool: ToolglassTools = ToolglassTools.None;
+ @observable public KeepPrimitiveMode = false; // for whether primitive selection enters a one-shot or persistent mode
@observable private _thumbX?: number;
@observable private _thumbY?: number;
@@ -616,29 +616,16 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
return false;
};
- handleLineGesture = (): boolean => {
- const actionPerformed = false;
- const B = this.svgBounds;
-
- // get the two targets at the ends of the line
- const ep1 = this._points[0];
- const ep2 = this._points.lastElement();
- const target1 = document.elementFromPoint(ep1.X, ep1.Y);
- const target2 = document.elementFromPoint(ep2.X, ep2.Y);
-
- const ge = new CustomEvent<GestureUtils.GestureEvent>('dashOnGesture', {
- bubbles: true,
- detail: {
- points: this._points.slice(),
- gesture: GestureUtils.Gestures.Line,
- bounds: B,
- },
- });
- target1?.dispatchEvent(ge);
- target2?.dispatchEvent(ge);
- return actionPerformed;
- };
-
+ @action primCreated() {
+ if (!this.KeepPrimitiveMode) {
+ this.InkShape = undefined;
+ //get out of ink mode after each stroke=
+ //if (Doc.ActiveTool === InkTool.Highlighter && GestureOverlay.Instance.SavedColor) SetActiveInkColor(GestureOverlay.Instance.SavedColor);
+ Doc.ActiveTool = InkTool.None;
+ // SetActiveArrowStart('none');
+ // SetActiveArrowEnd('none');
+ }
+ }
@action
onPointerUp = (e: PointerEvent) => {
if (this._points.length > 1) {
@@ -654,7 +641,6 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
switch (this.Tool) {
case ToolglassTools.InkToText:
this._strokes.push(this._points.slice());
- this._points.length = 0;
CognitiveServices.Inking.Appliers.InterpretStrokes(this._strokes).then(results => {
const wordResults = results.filter((r: any) => r.category === 'line');
const possibilities: string[] = [];
@@ -676,7 +662,6 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
break;
case ToolglassTools.IgnoreGesture:
this.dispatchGesture(GestureUtils.Gestures.Stroke);
- this._points.length = 0;
break;
}
}
@@ -684,11 +669,7 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
else if (this.InkShape) {
this.makeBezierPolygon(this.InkShape, false);
this.dispatchGesture(this.InkShape);
- this._points.length = 0;
- if (!CollectionFreeFormViewChrome.Instance?._keepPrimitiveMode) {
- this.InkShape = undefined;
- Doc.ActiveTool = InkTool.None;
- }
+ this.primCreated();
}
// if we're not drawing in a toolglass try to recognize as gesture
else {
@@ -697,18 +678,13 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
let actionPerformed = false;
if (Doc.UserDoc().recognizeGestures && result && result.Score > 0.7) {
switch (result.Name) {
+ case GestureUtils.Gestures.Line:
case GestureUtils.Gestures.Triangle:
case GestureUtils.Gestures.Rectangle:
case GestureUtils.Gestures.Circle:
this.makeBezierPolygon(result.Name, true);
actionPerformed = this.dispatchGesture(result.Name);
break;
- case GestureUtils.Gestures.Line:
- if (!(actionPerformed = this.handleLineGesture())) {
- this.makeBezierPolygon(result.Name, true);
- actionPerformed = this.dispatchGesture(GestureUtils.Gestures.Stroke);
- }
- break;
case GestureUtils.Gestures.Scribble:
console.log('scribble');
break;
@@ -741,12 +717,9 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
// TODO: nda - check inks to group here
checkInksToGroup();
}
- this._points.length = 0;
}
- } else {
- this._points.length = 0;
}
- CollectionFreeFormViewChrome.Instance?.primCreated();
+ this._points.length = 0;
};
makeBezierPolygon = (shape: string, gesture: boolean) => {
@@ -901,17 +874,17 @@ export class GestureOverlay extends Touchable<GestureOverlayProps> {
return false;
};
- dispatchGesture = (gesture: GestureUtils.Gestures, stroke?: InkData, data?: any) => {
- const target = document.elementFromPoint((stroke ?? this._points)[0].X, (stroke ?? this._points)[0].Y);
+ dispatchGesture = (gesture: GestureUtils.Gestures, stroke?: InkData, text?: any) => {
+ const points = (stroke ?? this._points).slice();
return (
- target?.dispatchEvent(
+ document.elementFromPoint(points[0].X, points[0].Y)?.dispatchEvent(
new CustomEvent<GestureUtils.GestureEvent>('dashOnGesture', {
bubbles: true,
detail: {
- points: stroke ?? this._points.slice(),
- gesture: gesture as any,
- bounds: this.getBounds(stroke ?? this._points),
- text: data,
+ points,
+ gesture,
+ bounds: this.getBounds(points),
+ text,
},
})
) || false