+15
-1
@@ -8,11 +8,12 @@ import { ViewportConstants } from 'browser/shared/Constants';
|
|||||||
import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
|
import { Disposable, toDisposable } from 'vs/base/common/lifecycle';
|
||||||
import { IBufferService, ICoreMouseService, IOptionsService } from 'common/services/Services';
|
import { IBufferService, ICoreMouseService, IOptionsService } from 'common/services/Services';
|
||||||
import { CoreMouseEventType } from 'common/Types';
|
import { CoreMouseEventType } from 'common/Types';
|
||||||
import { scheduleAtNextAnimationFrame } from 'vs/base/browser/dom';
|
import { addDisposableListener, scheduleAtNextAnimationFrame } from 'vs/base/browser/dom';
|
||||||
import { SmoothScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
|
import { SmoothScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
|
||||||
import type { ScrollableElementChangeOptions } from 'vs/base/browser/ui/scrollbar/scrollableElementOptions';
|
import type { ScrollableElementChangeOptions } from 'vs/base/browser/ui/scrollbar/scrollableElementOptions';
|
||||||
import { Emitter, Event } from 'vs/base/common/event';
|
import { Emitter, Event } from 'vs/base/common/event';
|
||||||
import { Scrollable, ScrollbarVisibility, type ScrollEvent } from 'vs/base/common/scrollable';
|
import { Scrollable, ScrollbarVisibility, type ScrollEvent } from 'vs/base/common/scrollable';
|
||||||
|
import { Gesture, EventType as GestureEventType, type GestureEvent } from 'vs/base/browser/touch';
|
||||||
|
|
||||||
export class Viewport extends Disposable {
|
export class Viewport extends Disposable {
|
||||||
|
|
||||||
@@ -104,6 +105,10 @@ export class Viewport extends Disposable {
|
|||||||
this._register(this._bufferService.onScroll(() => this._sync()));
|
this._register(this._bufferService.onScroll(() => this._sync()));
|
||||||
|
|
||||||
this._register(this._scrollableElement.onScroll(e => this._handleScroll(e)));
|
this._register(this._scrollableElement.onScroll(e => this._handleScroll(e)));
|
||||||
|
|
||||||
|
// Touch/gesture scrolling support
|
||||||
|
this._register(Gesture.addTarget(screenElement));
|
||||||
|
this._register(addDisposableListener(screenElement, GestureEventType.Change, (e: GestureEvent) => this._handleGestureChange(e)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public scrollLines(disp: number): void {
|
public scrollLines(disp: number): void {
|
||||||
@@ -190,4 +195,13 @@ export class Viewport extends Disposable {
|
|||||||
}
|
}
|
||||||
this._isHandlingScroll = false;
|
this._isHandlingScroll = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private _handleGestureChange(e: GestureEvent): void {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
const pos = this._scrollableElement.getScrollPosition();
|
||||||
|
this._scrollableElement.setScrollPosition({
|
||||||
|
scrollTop: pos.scrollTop - e.translationY
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user