Skip to content

Commit 248e669

Browse files
authored
* fixes microsoft#160272 * I guess this is how we do it
1 parent d050388 commit 248e669

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

src/vs/base/browser/ui/sash/sash.ts

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import { $, append, createStyleSheet, EventHelper, EventLike } from 'vs/base/browser/dom';
77
import { DomEmitter } from 'vs/base/browser/event';
8-
import { EventType, Gesture, GestureEvent } from 'vs/base/browser/touch';
8+
import { EventType, Gesture } from 'vs/base/browser/touch';
99
import { Delayer } from 'vs/base/common/async';
1010
import { memoize } from 'vs/base/common/decorators';
1111
import { Emitter, Event } from 'vs/base/common/event';
@@ -155,6 +155,7 @@ interface PointerEvent extends EventLike {
155155
readonly pageY: number;
156156
readonly altKey: boolean;
157157
readonly target: EventTarget | null;
158+
readonly initialTarget?: EventTarget | undefined;
158159
}
159160

160161
interface IPointerEventFactory {
@@ -419,17 +420,22 @@ export class Sash extends Disposable {
419420

420421
this._register(Gesture.addTarget(this.el));
421422

422-
const onTouchStart = Event.map(this._register(new DomEmitter(this.el, EventType.Start)).event, e => ({ ...e, target: e.initialTarget ?? null }));
423+
const onTouchStart = this._register(new DomEmitter(this.el, EventType.Start)).event;
423424
this._register(onTouchStart(e => this.onPointerStart(e, new GestureEventFactory(this.el)), this));
424425
const onTap = this._register(new DomEmitter(this.el, EventType.Tap)).event;
425-
const onDoubleTap = Event.map(
426-
Event.filter(
427-
Event.debounce<GestureEvent, { event: GestureEvent; count: number }>(onTap, (res, event) => ({ event, count: (res?.count ?? 0) + 1 }), 250),
428-
({ count }) => count === 2
429-
),
430-
({ event }) => ({ ...event, target: event.initialTarget ?? null })
431-
);
432-
this._register(onDoubleTap(this.onPointerDoublePress, this));
426+
427+
let doubleTapTimeout: any = undefined;
428+
this._register(onTap(event => {
429+
if (doubleTapTimeout) {
430+
clearTimeout(doubleTapTimeout);
431+
doubleTapTimeout = undefined;
432+
this.onPointerDoublePress(event);
433+
return;
434+
}
435+
436+
clearTimeout(doubleTapTimeout);
437+
doubleTapTimeout = setTimeout(() => doubleTapTimeout = undefined, 250);
438+
}, this));
433439

434440
if (typeof options.size === 'number') {
435441
this.size = options.size;
@@ -645,12 +651,14 @@ export class Sash extends Disposable {
645651
}
646652

647653
private getOrthogonalSash(e: PointerEvent): Sash | undefined {
648-
if (!e.target || !(e.target instanceof HTMLElement)) {
654+
const target = e.initialTarget ?? e.target;
655+
656+
if (!target || !(target instanceof HTMLElement)) {
649657
return undefined;
650658
}
651659

652-
if (e.target.classList.contains('orthogonal-drag-handle')) {
653-
return e.target.classList.contains('start') ? this.orthogonalStartSash : this.orthogonalEndSash;
660+
if (target.classList.contains('orthogonal-drag-handle')) {
661+
return target.classList.contains('start') ? this.orthogonalStartSash : this.orthogonalEndSash;
654662
}
655663

656664
return undefined;

0 commit comments

Comments
 (0)