src/vs/base/browser/touch.ts/Gesture/dispatchEvent
class Gesture:	private dispatchEvent(event: GestureEvent): void {
		if (event.type === EventType.Tap) {
			const currentTime = (new Date()).getTime();
			let setTapCount = 0;
			if (currentTime - this._lastSetTapCountTime > Gesture.CLEAR_TAP_COUNT_TIME) {
				setTapCount = 1;
			} else {
				setTapCount = 2;
			}

			this._lastSetTapCountTime = currentTime;
			event.tapCount = setTapCount;
		} else if (event.type === EventType.Change || event.type === EventType.Contextmenu) {
			// tap is canceled by scrolling or context menu
			this._lastSetTapCountTime = 0;
		}

		for (let i = 0; i < this.ignoreTargets.length; i++) {
			if (event.initialTarget instanceof Node && this.ignoreTargets[i].contains(event.initialTarget)) {
				return;
			}
		}

		this.targets.forEach(target => {
			if (event.initialTarget instanceof Node && target.contains(event.initialTarget)) {
				target.dispatchEvent(event);
				this.dispatched = true;
			}
		});
	}