diff --git a/src/vs/base/browser/ui/contextview/contextview.css b/src/vs/base/browser/ui/contextview/contextview.css index b1b67bbe3c3..23c421f37bf 100644 --- a/src/vs/base/browser/ui/contextview/contextview.css +++ b/src/vs/base/browser/ui/contextview/contextview.css @@ -4,6 +4,6 @@ *--------------------------------------------------------------------------------------------*/ .context-view { - position: absolute; + position: fixed; z-index: 2500; } diff --git a/src/vs/base/browser/ui/contextview/contextview.ts b/src/vs/base/browser/ui/contextview/contextview.ts index eacf37f358a..10444b6c373 100644 --- a/src/vs/base/browser/ui/contextview/contextview.ts +++ b/src/vs/base/browser/ui/contextview/contextview.ts @@ -38,7 +38,7 @@ export interface IDelegate { } export interface IContextViewProvider { - showContextView(delegate: IDelegate): void; + showContextView(delegate: IDelegate, container?: HTMLElement): void; hideContextView(): void; layout(): void; } @@ -255,9 +255,8 @@ export class ContextView extends Disposable { DOM.addClass(this.view, anchorPosition === AnchorPosition.BELOW ? 'bottom' : 'top'); DOM.addClass(this.view, anchorAlignment === AnchorAlignment.LEFT ? 'left' : 'right'); - const containerPosition = DOM.getDomNodePagePosition(this.container!); - this.view.style.top = `${top - containerPosition.top}px`; - this.view.style.left = `${left - containerPosition.left}px`; + this.view.style.top = `${top}px`; + this.view.style.left = `${left}px`; this.view.style.width = 'initial'; } diff --git a/src/vs/base/browser/ui/selectBox/selectBox.css b/src/vs/base/browser/ui/selectBox/selectBox.css index f684dd1085c..199ca5f98b8 100644 --- a/src/vs/base/browser/ui/selectBox/selectBox.css +++ b/src/vs/base/browser/ui/selectBox/selectBox.css @@ -6,3 +6,9 @@ .monaco-select-box { width: 100%; } + +.monaco-select-box-dropdown-container { + font-size: 13px; + font-weight: normal; + text-transform: none; +} diff --git a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts index 4924646f11c..ce1dd6f05f3 100644 --- a/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts +++ b/src/vs/base/browser/ui/selectBox/selectBoxCustom.ts @@ -89,6 +89,7 @@ export class SelectBoxList extends Disposable implements ISelectBoxDelegate, ILi private _isVisible: boolean; private selectBoxOptions: ISelectBoxOptions; private selectElement: HTMLSelectElement; + private container?: HTMLElement; private options: ISelectOptionItem[] = []; private selected: number; private readonly _onDidSelect: Emitter; @@ -307,6 +308,7 @@ export class SelectBoxList extends Disposable implements ISelectBoxDelegate, ILi } public render(container: HTMLElement): void { + this.container = container; dom.addClass(container, 'select-container'); container.appendChild(this.selectElement); this.applyStyles(); @@ -442,7 +444,7 @@ export class SelectBoxList extends Disposable implements ISelectBoxDelegate, ILi dom.toggleClass(this.selectElement, 'synthetic-focus', false); }, anchorPosition: this._dropDownPosition - }); + }, this.container); // Hide so we can relay out this._isVisible = true; @@ -457,7 +459,7 @@ export class SelectBoxList extends Disposable implements ISelectBoxDelegate, ILi dom.toggleClass(this.selectElement, 'synthetic-focus', false); }, anchorPosition: this._dropDownPosition - }); + }, this.container); // Track initial selection the case user escape, blur this._currentSelection = this.selected; diff --git a/src/vs/platform/contextview/browser/contextViewService.ts b/src/vs/platform/contextview/browser/contextViewService.ts index 1cbd4908c2d..a06a367c7ae 100644 --- a/src/vs/platform/contextview/browser/contextViewService.ts +++ b/src/vs/platform/contextview/browser/contextViewService.ts @@ -12,13 +12,15 @@ export class ContextViewService extends Disposable implements IContextViewServic _serviceBrand: undefined; private contextView: ContextView; + private container: HTMLElement; constructor( @ILayoutService readonly layoutService: ILayoutService ) { super(); - this.contextView = this._register(new ContextView(layoutService.container)); + this.container = layoutService.container; + this.contextView = this._register(new ContextView(this.container)); this.layout(); this._register(layoutService.onLayout(() => this.layout())); @@ -30,7 +32,20 @@ export class ContextViewService extends Disposable implements IContextViewServic this.contextView.setContainer(container); } - showContextView(delegate: IContextViewDelegate): void { + showContextView(delegate: IContextViewDelegate, container?: HTMLElement): void { + + if (container) { + if (container !== this.container) { + this.container = container; + this.setContainer(container); + } + } else { + if (this.container !== this.layoutService.container) { + this.container = this.layoutService.container; + this.setContainer(this.container); + } + } + this.contextView.show(delegate); } @@ -41,4 +56,4 @@ export class ContextViewService extends Disposable implements IContextViewServic hideContextView(data?: any): void { this.contextView.hide(data); } -} \ No newline at end of file +}