debug: address triggered breakpoint feedback (#203363)

Fixes #203154
Fixes #203155
Fixes #203156
Fixes #203158
This commit is contained in:
Connor Peet 2024-01-24 08:33:04 -10:00 committed by GitHub
parent 905ed4ffd5
commit 2d2f5bdb90
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 5 deletions

View file

@ -457,7 +457,7 @@ export class BreakpointEditorContribution implements IBreakpointEditorContributi
));
actions.push(new Action(
'addTriggeredBreakpoint',
nls.localize('addTriggeredBreakpoint', "Add Triggered Breakpoint.."),
nls.localize('addTriggeredBreakpoint', "Add Triggered Breakpoint..."),
undefined,
true,
() => Promise.resolve(this.showBreakpointWidget(lineNumber, column, BreakpointWidgetContext.TRIGGER_POINT))

View file

@ -84,6 +84,7 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakpointWi
private inputContainer!: HTMLElement;
private selectBreakpointContainer!: HTMLElement;
private input!: IActiveCodeEditor;
private selectBreakpointBox!: SelectBox;
private toDispose: lifecycle.IDisposable[];
private conditionInput = '';
private hitCountInput = '';
@ -205,7 +206,7 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakpointWi
{ text: nls.localize('expression', "Expression") },
{ text: nls.localize('hitCount', "Hit Count") },
{ text: nls.localize('logMessage', "Log Message") },
{ text: nls.localize('triggeredBy', "Wait For Breakpoint") },
{ text: nls.localize('triggeredBy', "Wait for Breakpoint") },
], this.context, this.contextViewService, defaultSelectBoxStyles, { ariaLabel: nls.localize('breakpointType', 'Breakpoint Type') });
this.selectContainer = $('.breakpoint-select-container');
selectBox.render(dom.append(container, this.selectContainer));
@ -228,7 +229,7 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakpointWi
this.updateContextInput();
// Due to an electron bug we have to do the timeout, otherwise we do not get focus
setTimeout(() => this.input.focus(), 150);
setTimeout(() => this.focusInput(), 150);
}
private createTriggerBreakpointInput(container: HTMLElement) {
@ -256,7 +257,7 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakpointWi
], select);
});
const selectBreakpointBox = new SelectBox([{ text: nls.localize('triggerByLoading', 'Loading...'), isDisabled: true }], 0, this.contextViewService, defaultSelectBoxStyles, { ariaLabel: nls.localize('selectBreakpoint', 'Select breakpoint') });
const selectBreakpointBox = this.selectBreakpointBox = new SelectBox([{ text: nls.localize('triggerByLoading', 'Loading...'), isDisabled: true }], 0, this.contextViewService, defaultSelectBoxStyles, { ariaLabel: nls.localize('selectBreakpoint', 'Select breakpoint') });
selectBreakpointBox.onDidSelect(e => {
if (e.index === 0) {
this.triggeredByBreakpointInput = undefined;
@ -295,7 +296,7 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakpointWi
this.setInputMode();
const value = this.getInputValue(this.breakpoint);
this.input.getModel().setValue(value);
this.input.focus();
this.focusInput();
}
}
@ -455,6 +456,14 @@ export class BreakpointWidget extends ZoneWidget implements IPrivateBreakpointWi
this.dispose();
}
private focusInput() {
if (this.context === Context.TRIGGER_POINT) {
this.selectBreakpointBox.focus();
} else {
this.input.focus();
}
}
override dispose(): void {
super.dispose();
this.input.dispose();

View file

@ -31,6 +31,9 @@
margin-top: -1px;
}
.codicon-debug-breakpoint-conditional.codicon-debug-stackframe-focused::after,
.codicon-debug-breakpoint-conditional.codicon-debug-stackframe::after,
.codicon-debug-breakpoint.codicon-debug-stackframe-focused::after,
.codicon-debug-breakpoint.codicon-debug-stackframe::after {
content: '\eb8a';