Skip to content

Commit 8a22996

Browse files
committed
Fix microsoft#83715. Handle touch to scroll in interactive playground.
1 parent e5e3589 commit 8a22996

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

src/vs/workbench/contrib/welcome/walkThrough/browser/walkThroughPart.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import 'vs/css!./walkThroughPart';
77
import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement';
8+
import { EventType as TouchEventType, GestureEvent, Gesture } from 'vs/base/browser/touch';
89
import { ScrollbarVisibility } from 'vs/base/common/scrollable';
910
import * as strings from 'vs/base/common/strings';
1011
import { URI } from 'vs/base/common/uri';
@@ -37,6 +38,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
3738
import { Dimension, size } from 'vs/base/browser/dom';
3839
import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService';
3940
import { CancellationToken } from 'vs/base/common/cancellation';
41+
import { domEvent } from 'vs/base/browser/event';
4042

4143
export const WALK_THROUGH_FOCUS = new RawContextKey<boolean>('interactivePlaygroundFocus', false);
4244

@@ -112,6 +114,14 @@ export class WalkThroughPart extends BaseEditor {
112114
}
113115
}
114116

117+
private onTouchChange(event: GestureEvent) {
118+
event.preventDefault();
119+
event.stopPropagation();
120+
121+
const scrollPosition = this.scrollbar.getScrollPosition();
122+
this.scrollbar.setScrollPosition({ scrollTop: scrollPosition.scrollTop - event.translationY });
123+
}
124+
115125
private addEventListener<K extends keyof HTMLElementEventMap, E extends HTMLElement>(element: E, type: K, listener: (this: E, ev: HTMLElementEventMap[K]) => any, useCapture?: boolean): IDisposable;
116126
private addEventListener<E extends HTMLElement>(element: E, type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): IDisposable;
117127
private addEventListener<E extends HTMLElement>(element: E, type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): IDisposable {
@@ -396,6 +406,8 @@ export class WalkThroughPart extends BaseEditor {
396406
this.scrollbar.scanDomNode();
397407
this.loadTextEditorViewState(input);
398408
this.updatedScrollPosition();
409+
this.contentDisposables.push(Gesture.addTarget(innerContent));
410+
this.contentDisposables.push(domEvent(innerContent, TouchEventType.Change)(this.onTouchChange, this, this.disposables));
399411
});
400412
}
401413

0 commit comments

Comments
 (0)