From 4904bf0d138d384c1c280582f31cd59d564e2e1c Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 29 Mar 2017 10:41:17 +0200 Subject: [PATCH] :bug: mouse doesn't work in intellisense any more fixes #23498 --- src/vs/base/browser/ui/list/listWidget.ts | 16 +++++++++++++--- .../contrib/suggest/browser/suggestWidget.ts | 5 ++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/vs/base/browser/ui/list/listWidget.ts b/src/vs/base/browser/ui/list/listWidget.ts index 3783091d12b..1f89de610c1 100644 --- a/src/vs/base/browser/ui/list/listWidget.ts +++ b/src/vs/base/browser/ui/list/listWidget.ts @@ -282,6 +282,10 @@ function isSelectionChangeEvent(event: IListMouseEvent): boolean { return isSelectionSingleChangeEvent(event) || isSelectionRangeChangeEvent(event); } +export interface IMouseControllerOptions { + selectOnMouseDown?: boolean; +} + class MouseController implements IDisposable { private disposables: IDisposable[]; @@ -309,7 +313,8 @@ class MouseController implements IDisposable { constructor( private list: List, - private view: ListView + private view: ListView, + private options: IMouseControllerOptions = {} ) { this.disposables = []; this.disposables.push(view.addListener('mousedown', e => this.onMouseDown(e))); @@ -335,6 +340,11 @@ class MouseController implements IDisposable { if (isSelectionChangeEvent(e)) { return this.changeSelection(e, reference); } + + if (this.options.selectOnMouseDown) { + this.list.setSelection([focus]); + this.list.open([focus]); + } } private onPointer(e: IListMouseEvent): void { @@ -384,7 +394,7 @@ class MouseController implements IDisposable { } } -export interface IListOptions extends IListViewOptions { +export interface IListOptions extends IListViewOptions, IMouseControllerOptions { identityProvider?: IIdentityProvider; ariaLabel?: string; mouseSupport?: boolean; @@ -574,7 +584,7 @@ export class List implements ISpliceable, IDisposable { } if (typeof options.mouseSupport !== 'boolean' || options.mouseSupport) { - const controller = new MouseController(this, this.view); + const controller = new MouseController(this, this.view, options); this.disposables.push(controller); this._onContextMenu = controller.onContextMenu; } diff --git a/src/vs/editor/contrib/suggest/browser/suggestWidget.ts b/src/vs/editor/contrib/suggest/browser/suggestWidget.ts index c1a10b9e1de..f801c9541a9 100644 --- a/src/vs/editor/contrib/suggest/browser/suggestWidget.ts +++ b/src/vs/editor/contrib/suggest/browser/suggestWidget.ts @@ -359,7 +359,10 @@ export class SuggestWidget implements IContentWidget, IDelegate let renderer: IRenderer = instantiationService.createInstance(Renderer, this, this.editor); - this.list = new List(this.listElement, this, [renderer], { useShadows: false }); + this.list = new List(this.listElement, this, [renderer], { + useShadows: false, + selectOnMouseDown: true + }); this.toDispose = [ editor.onDidBlurEditorText(() => this.onEditorBlur()), -- GitLab