Skip to content

Commit e1983fa

Browse files
committed
Always show the overload count, even if there are more than 10
Fixes microsoft#84682 Also switches the use flexboxes to layout the parameter hints widget instead of absolute positioning
1 parent b6a486e commit e1983fa

2 files changed

Lines changed: 16 additions & 31 deletions

File tree

src/vs/editor/contrib/parameterHints/parameterHints.css

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
.monaco-editor .parameter-hints-widget > .wrapper {
1414
max-width: 440px;
1515
display: flex;
16-
flex-direction: column;
16+
flex-direction: row;
1717
}
1818

1919
.monaco-editor .parameter-hints-widget.multiple {
2020
min-height: 3.3em;
21-
padding: 0 0 0 1.9em;
21+
padding: 0;
2222
}
2323

2424
.monaco-editor .parameter-hints-widget.visible {
@@ -62,20 +62,19 @@
6262
padding: 0 0.4em;
6363
}
6464

65-
.monaco-editor .parameter-hints-widget .buttons {
66-
position: absolute;
65+
.monaco-editor .parameter-hints-widget .controls {
6766
display: none;
68-
bottom: 0;
69-
left: 0;
67+
flex-direction: column;
68+
align-items: center;
69+
min-width: 22px;
70+
justify-content: flex-end;
7071
}
7172

72-
.monaco-editor .parameter-hints-widget.multiple .buttons {
73-
display: block;
73+
.monaco-editor .parameter-hints-widget.multiple .controls {
74+
display: flex;
7475
}
7576

7677
.monaco-editor .parameter-hints-widget.multiple .button {
77-
position: absolute;
78-
left: 2px;
7978
width: 16px;
8079
height: 16px;
8180
background-repeat: no-repeat;
@@ -88,26 +87,16 @@
8887
}
8988

9089
.monaco-editor .parameter-hints-widget .button.next {
91-
bottom: 0;
9290
background-image: url('arrow-down.svg');
9391
}
9492

9593
.monaco-editor .parameter-hints-widget .overloads {
96-
position: absolute;
97-
display: none;
9894
text-align: center;
99-
bottom: 14px;
100-
left: 0;
101-
width: 22px;
10295
height: 12px;
10396
line-height: 12px;
10497
opacity: 0.5;
10598
}
10699

107-
.monaco-editor .parameter-hints-widget.multiple .overloads {
108-
display: block;
109-
}
110-
111100
.monaco-editor .parameter-hints-widget .signature .parameter.active {
112101
font-weight: bold;
113102
text-decoration: underline;

src/vs/editor/contrib/parameterHints/parameterHintsWidget.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import { IOpenerService } from 'vs/platform/opener/common/opener';
2222
import { editorHoverBackground, editorHoverBorder, textCodeBlockBackground, textLinkForeground, editorHoverForeground } from 'vs/platform/theme/common/colorRegistry';
2323
import { HIGH_CONTRAST, registerThemingParticipant } from 'vs/platform/theme/common/themeService';
2424
import { ParameterHintsModel, TriggerContext } from 'vs/editor/contrib/parameterHints/parameterHintsModel';
25+
import { pad } from 'vs/base/common/strings';
2526

2627
const $ = dom.$;
2728

@@ -76,18 +77,17 @@ export class ParameterHintsWidget extends Disposable implements IContentWidget {
7677
const wrapper = dom.append(element, $('.wrapper'));
7778
wrapper.tabIndex = -1;
7879

79-
const buttons = dom.append(wrapper, $('.buttons'));
80-
const previous = dom.append(buttons, $('.button.previous'));
81-
const next = dom.append(buttons, $('.button.next'));
80+
const controls = dom.append(wrapper, $('.controls'));
81+
const previous = dom.append(controls, $('.button.previous'));
82+
const overloads = dom.append(controls, $('.overloads'));
83+
const next = dom.append(controls, $('.button.next'));
8284

8385
const onPreviousClick = stop(domEvent(previous, 'click'));
8486
this._register(onPreviousClick(this.previous, this));
8587

8688
const onNextClick = stop(domEvent(next, 'click'));
8789
this._register(onNextClick(this.next, this));
8890

89-
const overloads = dom.append(wrapper, $('.overloads'));
90-
9191
const body = $('.body');
9292
const scrollbar = new DomScrollableElement(body, {});
9393
this._register(scrollbar);
@@ -239,12 +239,8 @@ export class ParameterHintsWidget extends Disposable implements IContentWidget {
239239
dom.toggleClass(this.domNodes.signature, 'has-docs', hasDocs);
240240
dom.toggleClass(this.domNodes.docs, 'empty', !hasDocs);
241241

242-
let currentOverload = String(hints.activeSignature + 1);
243-
if (hints.signatures.length < 10) {
244-
currentOverload += `/${hints.signatures.length}`;
245-
}
246-
247-
this.domNodes.overloads.textContent = currentOverload;
242+
this.domNodes.overloads.textContent =
243+
pad(hints.activeSignature + 1, hints.signatures.length.toString().length) + '/' + hints.signatures.length;
248244

249245
if (activeParameter) {
250246
const labelToAnnounce = this.getParameterLabel(signature, hints.activeParameter);

0 commit comments

Comments
 (0)