Skip to content

Commit

Permalink
Fixes microsoft/monaco-editor#69: Introduce and adopt `alwaysConsumeM…
Browse files Browse the repository at this point in the history
…ouseWheel` ScrollableElement option
  • Loading branch information
alexdima committed Aug 28, 2016
1 parent 731085a commit 056a161
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/vs/base/browser/ui/list/listView.ts
Expand Up @@ -87,6 +87,7 @@ export class ListView<T> implements IDisposable {

this.scrollableElement = new ScrollableElement(this.rowsContainer, {
canUseTranslate3d: false,
alwaysConsumeMouseWheel: true,
horizontal: ScrollbarVisibility.Hidden,
vertical: ScrollbarVisibility.Auto,
useShadows: getOrDefault(options, o => o.useShadows, DefaultOptions.useShadows),
Expand Down
7 changes: 5 additions & 2 deletions src/vs/base/browser/ui/scrollbar/scrollableElement.ts
Expand Up @@ -285,8 +285,10 @@ export class ScrollableElement extends Widget {
}
}

e.preventDefault();
e.stopPropagation();
if (this._options.alwaysConsumeMouseWheel || this._shouldRender) {
e.preventDefault();
e.stopPropagation();
}
}

private _onDidScroll(e:ScrollEvent): void {
Expand Down Expand Up @@ -416,6 +418,7 @@ function resolveOptions(opts: ScrollableElementCreationOptions): ScrollableEleme
useShadows: (typeof opts.useShadows !== 'undefined' ? opts.useShadows : true),
handleMouseWheel: (typeof opts.handleMouseWheel !== 'undefined' ? opts.handleMouseWheel : true),
flipAxes: (typeof opts.flipAxes !== 'undefined' ? opts.flipAxes : false),
alwaysConsumeMouseWheel: (typeof opts.alwaysConsumeMouseWheel !== 'undefined' ? opts.alwaysConsumeMouseWheel : false),
scrollYToX: (typeof opts.scrollYToX !== 'undefined' ? opts.scrollYToX : false),
mouseWheelScrollSensitivity: (typeof opts.mouseWheelScrollSensitivity !== 'undefined' ? opts.mouseWheelScrollSensitivity : 1),
arrowSize: (typeof opts.arrowSize !== 'undefined' ? opts.arrowSize : 11),
Expand Down
6 changes: 6 additions & 0 deletions src/vs/base/browser/ui/scrollbar/scrollableElementOptions.ts
Expand Up @@ -40,6 +40,11 @@ export interface ScrollableElementCreationOptions {
* Defaults to false.
*/
scrollYToX?: boolean;
/**
* Always consume mouse wheel events, even when scrolling is no longer possible.
* Defaults to false.
*/
alwaysConsumeMouseWheel?: boolean;
/**
* A multiplier to be used on the `deltaX` and `deltaY` of mouse wheel scroll events.
* Defaults to 1.
Expand Down Expand Up @@ -117,6 +122,7 @@ export interface ScrollableElementResolvedOptions {
handleMouseWheel: boolean;
flipAxes: boolean;
scrollYToX: boolean;
alwaysConsumeMouseWheel: boolean;
mouseWheelScrollSensitivity: number;
arrowSize: number;
listenOnDomNode: HTMLElement;
Expand Down
1 change: 1 addition & 0 deletions src/vs/base/parts/tree/browser/treeView.ts
Expand Up @@ -489,6 +489,7 @@ export class TreeView extends HeightMap {
this.wrapper.className = 'monaco-tree-wrapper';
this.scrollableElement = new ScrollableElement(this.wrapper, {
canUseTranslate3d: false,
alwaysConsumeMouseWheel: true,
horizontal: ScrollbarVisibility.Hidden,
vertical: (typeof context.options.verticalScrollMode !== 'undefined' ? context.options.verticalScrollMode : ScrollbarVisibility.Auto),
useShadows: context.options.useShadows,
Expand Down

0 comments on commit 056a161

Please sign in to comment.