Skip to content

Commit fcac248

Browse files
authored
Merge pull request #109961 from microsoft/joh/fix/109906
Fix 109906
2 parents 271026e + 9a44531 commit fcac248

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

src/vs/editor/contrib/suggest/suggestController.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,10 @@ export class SuggestController implements IEditorContribution {
584584
toggleSuggestionFocus(): void {
585585
this.widget.value.toggleDetailsFocus();
586586
}
587+
588+
resetWidgetSize(): void {
589+
this.widget.value.resetPersistedSize();
590+
}
587591
}
588592

589593
export class TriggerSuggestAction extends EditorAction {
@@ -875,3 +879,20 @@ registerEditorCommand(new SuggestCommand({
875879
primary: KeyMod.Shift | KeyCode.Tab
876880
}
877881
}));
882+
883+
884+
registerEditorAction(class extends EditorAction {
885+
886+
constructor() {
887+
super({
888+
id: 'editor.action.resetSuggestSize',
889+
label: nls.localize('suggest.reset.label', "Reset Suggest Widget Size"),
890+
alias: 'Reset Suggest Widget Size',
891+
precondition: undefined
892+
});
893+
}
894+
895+
run(_accessor: ServicesAccessor, editor: ICodeEditor): void {
896+
SuggestController.get(editor).resetWidgetSize();
897+
}
898+
});

src/vs/editor/contrib/suggest/suggestWidget.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ class PersistedWidgetSize {
8484
store(size: dom.Dimension) {
8585
this._service.store(this._key, JSON.stringify(size), StorageScope.GLOBAL);
8686
}
87+
88+
reset(): void {
89+
this._service.remove(this._key, StorageScope.GLOBAL);
90+
}
8791
}
8892

8993
export class SuggestWidget implements IDisposable {
@@ -149,11 +153,13 @@ export class SuggestWidget implements IDisposable {
149153
this._persistedSize = new PersistedWidgetSize(_storageService, editor);
150154

151155
let persistedSize: dom.Dimension | undefined;
156+
let currentSize: dom.Dimension | undefined;
152157
let persistHeight = false;
153158
let persistWidth = false;
154159
this._disposables.add(this.element.onDidWillResize(() => {
155160
this._contentWidget.lockPreference();
156161
persistedSize = this._persistedSize.restore();
162+
currentSize = this.element.size;
157163
}));
158164
this._disposables.add(this.element.onDidResize(e => {
159165

@@ -162,14 +168,15 @@ export class SuggestWidget implements IDisposable {
162168
persistHeight = persistHeight || !!e.north || !!e.south;
163169
persistWidth = persistWidth || !!e.east || !!e.west;
164170
if (e.done) {
165-
166-
// only store width or height value that have changed
171+
// only store width or height value that have changed and also
172+
// only store changes that are above a certain threshold
173+
const threshold = Math.floor(this.getLayoutInfo().itemHeight / 2);
167174
let { width, height } = this.element.size;
168-
if (persistedSize) {
169-
if (!persistHeight) {
175+
if (persistedSize && currentSize) {
176+
if (!persistHeight || Math.abs(currentSize.height - height) <= threshold) {
170177
height = persistedSize.height;
171178
}
172-
if (!persistWidth) {
179+
if (!persistWidth || Math.abs(currentSize.width - width) <= threshold) {
173180
width = persistedSize.width;
174181
}
175182
}
@@ -178,6 +185,7 @@ export class SuggestWidget implements IDisposable {
178185
// reset working state
179186
this._contentWidget.unlockPreference();
180187
persistedSize = undefined;
188+
currentSize = undefined;
181189
persistHeight = false;
182190
persistWidth = false;
183191
}
@@ -683,6 +691,10 @@ export class SuggestWidget implements IDisposable {
683691
}
684692
}
685693

694+
resetPersistedSize(): void {
695+
this._persistedSize.reset();
696+
}
697+
686698
hideWidget(): void {
687699
this.loadingTimeout.dispose();
688700
this._setState(State.Hidden);

0 commit comments

Comments
 (0)