提交 c08cfd17 编写于 作者: A Alex Dima 提交者: unknown

Fixes #3056

上级 cfbf9294
......@@ -13,6 +13,7 @@ export namespace EventType {
export const Change = '-monaco-gesturechange';
export const Start = '-monaco-gesturestart';
export const End = '-monaco-gesturesend';
export const Contextmenu = '-monaco-gesturecontextmenu';
}
interface TouchData {
......@@ -64,7 +65,7 @@ interface TouchEvent extends Event {
export class Gesture implements IDisposable {
private static HOLD_DELAY = 2000;
private static HOLD_DELAY = 700;
private static SCROLL_FRICTION = -0.005;
private targetElement: HTMLElement;
......@@ -160,9 +161,9 @@ export class Gesture implements IDisposable {
let data = this.activeTouches[touch.identifier],
holdTime = Date.now() - data.initialTimeStamp;
if (holdTime < Gesture.HOLD_DELAY &&
Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30 &&
Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {
if (holdTime < Gesture.HOLD_DELAY
&& Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30
&& Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {
let evt = Gesture.newGestureEvent(EventType.Tap);
evt.initialTarget = data.initialTarget;
......@@ -170,6 +171,16 @@ export class Gesture implements IDisposable {
evt.pageY = arrays.tail(data.rollingPageY);
this.targetElement.dispatchEvent(evt);
} else if (holdTime >= Gesture.HOLD_DELAY
&& Math.abs(data.initialPageX - arrays.tail(data.rollingPageX)) < 30
&& Math.abs(data.initialPageY - arrays.tail(data.rollingPageY)) < 30) {
let evt = Gesture.newGestureEvent(EventType.Contextmenu);
evt.initialTarget = data.initialTarget;
evt.pageX = arrays.tail(data.rollingPageX);
evt.pageY = arrays.tail(data.rollingPageY);
this.targetElement.dispatchEvent(evt);
} else if (activeTouchCount === 1) {
let finalX = arrays.tail(data.rollingPageX);
let finalY = arrays.tail(data.rollingPageY);
......
......@@ -145,7 +145,7 @@ export class MouseHandler extends ViewEventHandler implements IDisposable {
this.lastMouseLeaveTime = -1;
this.listenersToRemove.push(dom.addDisposableListener(this.viewHelper.viewDomNode, 'contextmenu',
(e: MouseEvent) => this._onContextMenu(e)));
(e: MouseEvent) => this._onContextMenu(e, true)));
this._mouseMoveEventHandler = new EventGateKeeper<IMouseEvent>((e) => this._onMouseMove(e), () => !this.viewHelper.isDirty());
this.toDispose.push(this._mouseMoveEventHandler);
......@@ -203,9 +203,9 @@ export class MouseHandler extends ViewEventHandler implements IDisposable {
return this.mouseTargetFactory.createMouseTarget(this._layoutInfo, editorContent, e, testEventTarget);
}
private _onContextMenu(rawEvent: MouseEvent): void {
protected _onContextMenu(rawEvent: MouseEvent, testEventTarget:boolean): void {
var e = new StandardMouseEvent(rawEvent);
var t = this._createMouseTarget(e, true);
var t = this._createMouseTarget(e, testEventTarget);
var mouseEvent: editorBrowser.IEditorMouseEvent = {
event: e,
target: t
......
......@@ -198,6 +198,8 @@ class TouchHandler extends MouseHandler {
this.listenersToRemove.push(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Tap, (e) => this.onTap(e)));
this.listenersToRemove.push(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Change, (e) => this.onChange(e)));
this.listenersToRemove.push(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Contextmenu, (e: MouseEvent) => this._onContextMenu(e, false)));
}
public dispose(): void {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册