提交 c2997da2 编写于 作者: I isidor

Gesture.addTarget returns an IDisposable

fixes #81630
上级 5c3ac79b
......@@ -86,15 +86,21 @@ export class Gesture extends Disposable {
this._register(DomUtils.addDisposableListener(document, 'touchmove', (e: TouchEvent) => this.onTouchMove(e)));
}
public static addTarget(element: HTMLElement): void {
public static addTarget(element: HTMLElement): IDisposable {
if (!Gesture.isTouchDevice()) {
return;
return Disposable.None;
}
if (!Gesture.INSTANCE) {
Gesture.INSTANCE = new Gesture();
}
Gesture.INSTANCE.targets.push(element);
return {
dispose: () => {
Gesture.INSTANCE.targets = Gesture.INSTANCE.targets.filter(t => t !== element);
}
};
}
@memoize
......
......@@ -103,7 +103,7 @@ export class BaseActionViewItem extends Disposable implements IActionViewItem {
render(container: HTMLElement): void {
this.element = container;
Gesture.addTarget(container);
this._register(Gesture.addTarget(container));
const enableDragging = this.options && this.options.draggable;
if (enableDragging) {
......
......@@ -63,7 +63,7 @@ export class Button extends Disposable {
container.appendChild(this._element);
Gesture.addTarget(this._element);
this._register(Gesture.addTarget(this._element));
[DOM.EventType.CLICK, EventType.Tap].forEach(eventType => {
this._register(DOM.addDisposableListener(this._element, eventType, e => {
......
......@@ -83,7 +83,7 @@ export class BaseDropdown extends ActionRunner {
this._register(cleanupFn);
}
Gesture.addTarget(this._label);
this._register(Gesture.addTarget(this._label));
}
get element(): HTMLElement {
......
......@@ -236,7 +236,7 @@ export class ListView<T> implements ISpliceable<T>, IDisposable {
this.rowsContainer = document.createElement('div');
this.rowsContainer.className = 'monaco-list-rows';
Gesture.addTarget(this.rowsContainer);
this.disposables.add(Gesture.addTarget(this.rowsContainer));
this.scrollableElement = this.disposables.add(new ScrollableElement(this.rowsContainer, {
alwaysConsumeMouseWheel: true,
......
......@@ -542,7 +542,7 @@ export class MouseController<T> implements IDisposable {
list.onContextMenu(this.onContextMenu, this, this.disposables);
list.onMouseDblClick(this.onDoubleClick, this, this.disposables);
list.onTouchStart(this.onMouseDown, this, this.disposables);
Gesture.addTarget(list.getHTMLElement());
this.disposables.add(Gesture.addTarget(list.getHTMLElement()));
}
list.onMouseClick(this.onPointer, this, this.disposables);
......
......@@ -238,7 +238,7 @@ export class MenuBar extends Disposable {
}
}));
Gesture.addTarget(buttonElement);
this._register(Gesture.addTarget(buttonElement));
this._register(DOM.addDisposableListener(buttonElement, EventType.Tap, (e: GestureEvent) => {
// Ignore this touch if the menu is touched
if (this.isOpen && this.focusedMenu && this.focusedMenu.holder && DOM.isAncestor(e.initialTarget as HTMLElement, this.focusedMenu.holder)) {
......@@ -322,7 +322,7 @@ export class MenuBar extends Disposable {
}
}));
Gesture.addTarget(buttonElement);
this._register(Gesture.addTarget(buttonElement));
this._register(DOM.addDisposableListener(buttonElement, EventType.Tap, (e: GestureEvent) => {
// Ignore this touch if the menu is touched
if (this.isOpen && this.focusedMenu && this.focusedMenu.holder && DOM.isAncestor(e.initialTarget as HTMLElement, this.focusedMenu.holder)) {
......
......@@ -139,7 +139,7 @@ export class Sash extends Disposable {
this._register(domEvent(this.el, 'mousedown')(this.onMouseDown, this));
this._register(domEvent(this.el, 'dblclick')(this.onMouseDoubleClick, this));
Gesture.addTarget(this.el);
this._register(Gesture.addTarget(this.el));
this._register(domEvent(this.el, EventType.Start)(this.onTouchStart, this));
if (isIPad) {
......
......@@ -437,6 +437,7 @@ export class TreeView extends HeightMap {
private shouldInvalidateDropReaction: boolean;
private currentDropTargets: ViewItem[] | null = null;
private currentDropDisposable: Lifecycle.IDisposable = Lifecycle.Disposable.None;
private gestureDisposable: Lifecycle.IDisposable = Lifecycle.Disposable.None;
private dragAndDropScrollInterval: number | null = null;
private dragAndDropScrollTimeout: number | null = null;
private dragAndDropMouseY: number | null = null;
......@@ -523,7 +524,7 @@ export class TreeView extends HeightMap {
this.wrapper.style.msTouchAction = 'none';
this.wrapper.style.msContentZooming = 'none';
} else {
Touch.Gesture.addTarget(this.wrapper);
this.gestureDisposable = Touch.Gesture.addTarget(this.wrapper);
}
this.rowsContainer = document.createElement('div');
......@@ -1675,6 +1676,7 @@ export class TreeView extends HeightMap {
if (this.context.cache) {
this.context.cache.dispose();
}
this.gestureDisposable.dispose();
super.dispose();
}
......
......@@ -190,7 +190,7 @@ class TouchHandler extends MouseHandler {
constructor(context: ViewContext, viewController: ViewController, viewHelper: IPointerHandlerHelper) {
super(context, viewController, viewHelper);
Gesture.addTarget(this.viewHelper.linesContentDomNode);
this._register(Gesture.addTarget(this.viewHelper.linesContentDomNode));
this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Tap, (e) => this.onTap(e)));
this._register(dom.addDisposableListener(this.viewHelper.linesContentDomNode, EventType.Change, (e) => this.onChange(e)));
......
......@@ -34,7 +34,7 @@ export class NoTabsTitleControl extends TitleControl {
this.registerContainerListeners();
// Gesture Support
Gesture.addTarget(this.titleContainer);
this._register(Gesture.addTarget(this.titleContainer));
const labelContainer = document.createElement('div');
addClass(labelContainer, 'label-container');
......
......@@ -425,7 +425,7 @@ export class TabsTitleControl extends TitleControl {
addClass(tabContainer, 'tab');
// Gesture Support
Gesture.addTarget(tabContainer);
this._register(Gesture.addTarget(tabContainer));
// Tab Border Top
const tabBorderTopContainer = document.createElement('div');
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册