Skip to content

Commit

Permalink
remove 600 pixel limit on quick input widget
Browse files Browse the repository at this point in the history
  • Loading branch information
usr-org committed Feb 4, 2023
1 parent b859044 commit b7ecc26
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 0 deletions.
82 changes: 82 additions & 0 deletions patches/user/117862.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
diff --git a/src/vs/base/parts/quickinput/browser/quickInput.ts b/src/vs/base/parts/quickinput/browser/quickInput.ts
index 2ab5e7a478d21..0f92b25ca96ac 100644
--- a/src/vs/base/parts/quickinput/browser/quickInput.ts
+++ b/src/vs/base/parts/quickinput/browser/quickInput.ts
@@ -36,6 +36,8 @@ export interface IQuickInputOptions {
idPrefix: string;
container: HTMLElement;
ignoreFocusOut(): boolean;
+ maximumWidth(): number;
+ relativeWidth(): number;
isScreenReaderOptimized(): boolean;
backKeybindingLabel(): string | undefined;
setContextKey(id?: string): void;
@@ -1110,8 +1112,6 @@ class InputBox extends QuickInput implements IInputBox {
}

export class QuickInputController extends Disposable {
- private static readonly MAX_WIDTH = 600; // Max total width of quick input widget
-
private idPrefix: string;
private ui: QuickInputUI | undefined;
private dimension?: dom.IDimension;
@@ -1670,7 +1670,7 @@ export class QuickInputController extends Disposable {
this.ui.container.style.top = `${this.titleBarOffset}px`;

const style = this.ui.container.style;
- const width = Math.min(this.dimension!.width * 0.62 /* golden cut */, QuickInputController.MAX_WIDTH);
+ const width = Math.min(this.dimension!.width * this.options.relativeWidth(), this.options.maximumWidth());
style.width = width + 'px';
style.marginLeft = '-' + (width / 2) + 'px';

diff --git a/src/vs/platform/quickinput/browser/quickInput.ts b/src/vs/platform/quickinput/browser/quickInput.ts
index d696697f9d0d1..7578f096adf2a 100644
--- a/src/vs/platform/quickinput/browser/quickInput.ts
+++ b/src/vs/platform/quickinput/browser/quickInput.ts
@@ -65,6 +65,8 @@ export class QuickInputService extends Themable implements IQuickInputService {
idPrefix: 'quickInput_', // Constant since there is still only one.
container: host.container,
ignoreFocusOut: () => false,
+ maximumWidth: () => 600,
+ relativeWidth: () => 0.62,
isScreenReaderOptimized: () => this.accessibilityService.isScreenReaderOptimized(),
backKeybindingLabel: () => undefined,
setContextKey: (id?: string) => this.setContextKey(id),
diff --git a/src/vs/workbench/browser/workbench.contribution.ts b/src/vs/workbench/browser/workbench.contribution.ts
index 137c89d8bfb27..65db46aa963d0 100644
--- a/src/vs/workbench/browser/workbench.contribution.ts
+++ b/src/vs/workbench/browser/workbench.contribution.ts
@@ -238,6 +238,20 @@ import { isStandalone } from 'vs/base/browser/browser';
'description': localize('workbench.quickOpen.preserveInput', "Controls whether the last typed input to Quick Open should be restored when opening it the next time."),
'default': false
},
+ 'workbench.quickOpen.maximumWidth': {
+ 'type': 'number',
+ 'description': localize('workbench.quickOpen.maxWidth', "Limits the maximum width of the quick open widget to the specified number of pixels."),
+ 'default': 600,
+ 'minimum': 200,
+ 'maximum': 2000
+ },
+ 'workbench.quickOpen.relativeWidth': {
+ 'type': 'number',
+ 'description': localize('workbench.quickOpen.relativeWidth', "Controls the width of the quick open widget relative to the total window width."),
+ 'default': 0.62,
+ 'minimum': 0.1,
+ 'maximum': 1.0
+ },
'workbench.settings.openDefaultSettings': {
'type': 'boolean',
'description': localize('openDefaultSettings', "Controls whether opening settings also opens an editor showing all default settings."),
diff --git a/src/vs/workbench/services/quickinput/browser/quickInputService.ts b/src/vs/workbench/services/quickinput/browser/quickInputService.ts
index fcdad25645e4a..0bf9c63e5c405 100644
--- a/src/vs/workbench/services/quickinput/browser/quickInputService.ts
+++ b/src/vs/workbench/services/quickinput/browser/quickInputService.ts
@@ -41,6 +41,8 @@ export class QuickInputService extends BaseQuickInputService {

protected createController(): QuickInputController {
return super.createController(this.layoutService, {
+ maximumWidth: () => this.configurationService.getValue('workbench.quickOpen.maximumWidth'),
+ relativeWidth: () => this.configurationService.getValue('workbench.quickOpen.relativeWidth'),
ignoreFocusOut: () => !this.configurationService.getValue('workbench.quickOpen.closeOnFocusLost'),
backKeybindingLabel: () => this.keybindingService.lookupKeybinding('workbench.action.quickInputBack')?.getLabel() || undefined,
});
5 changes: 5 additions & 0 deletions patches/user/readme.txt
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
store user patches at location patches/user and those will be applied to vscode source git by the scripts


- remove arbitrary 600 pixel limit on quick input widget
- remove arbitrary 600 pixel limit on quick input widget
wget https://github.com/microsoft/vscode/pull/117862.diff

0 comments on commit b7ecc26

Please sign in to comment.