未验证 提交 f015e86e 编写于 作者: I Isidor Nikolic 提交者: GitHub

Merge pull request #96934 from microsoft/ben/title-prefix

Debug: indicate to title when debug breakpoint is hit (Web)
......@@ -72,7 +72,7 @@ export class TitlebarPart extends Part implements ITitleService {
private isInactive: boolean = false;
private readonly properties: ITitleProperties = { isPure: true, isAdmin: false };
private readonly properties: ITitleProperties = { isPure: true, isAdmin: false, prefix: undefined };
private readonly activeEditorListeners = this._register(new DisposableStore());
private readonly titleUpdater = this._register(new RunOnceScheduler(() => this.doUpdateTitle(), 0));
......@@ -191,6 +191,10 @@ export class TitlebarPart extends Part implements ITitleService {
private getWindowTitle(): string {
let title = this.doGetWindowTitle();
if (this.properties.prefix) {
title = `${this.properties.prefix} ${title || this.productService.nameLong}`;
}
if (this.properties.isAdmin) {
title = `${title || this.productService.nameLong} ${TitlebarPart.NLS_USER_IS_ADMIN}`;
}
......@@ -212,10 +216,12 @@ export class TitlebarPart extends Part implements ITitleService {
updateProperties(properties: ITitleProperties): void {
const isAdmin = typeof properties.isAdmin === 'boolean' ? properties.isAdmin : this.properties.isAdmin;
const isPure = typeof properties.isPure === 'boolean' ? properties.isPure : this.properties.isPure;
const prefix = typeof properties.prefix === 'string' ? properties.prefix : this.properties.prefix;
if (isAdmin !== this.properties.isAdmin || isPure !== this.properties.isPure) {
if (isAdmin !== this.properties.isAdmin || isPure !== this.properties.isPure || prefix !== this.properties.prefix) {
this.properties.isAdmin = isAdmin;
this.properties.isPure = isPure;
this.properties.prefix = prefix;
this.titleUpdater.schedule();
}
......
......@@ -29,7 +29,7 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import { registerCommands, ADD_CONFIGURATION_ID, TOGGLE_INLINE_BREAKPOINT_ID, COPY_STACK_TRACE_ID, REVERSE_CONTINUE_ID, STEP_BACK_ID, RESTART_SESSION_ID, TERMINATE_THREAD_ID, STEP_OVER_ID, STEP_INTO_ID, STEP_OUT_ID, PAUSE_ID, DISCONNECT_ID, STOP_ID, RESTART_FRAME_ID, CONTINUE_ID, FOCUS_REPL_ID, JUMP_TO_CURSOR_ID, RESTART_LABEL, STEP_INTO_LABEL, STEP_OVER_LABEL, STEP_OUT_LABEL, PAUSE_LABEL, DISCONNECT_LABEL, STOP_LABEL, CONTINUE_LABEL } from 'vs/workbench/contrib/debug/browser/debugCommands';
import { StatusBarColorProvider } from 'vs/workbench/contrib/debug/browser/statusbarColorProvider';
import { IViewsRegistry, Extensions as ViewExtensions, IViewContainersRegistry, ViewContainerLocation, ViewContainer } from 'vs/workbench/common/views';
import { isMacintosh } from 'vs/base/common/platform';
import { isMacintosh, isWeb } from 'vs/base/common/platform';
import { ContextKeyExpr, ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey';
import { URI } from 'vs/base/common/uri';
import { DebugStatusContribution } from 'vs/workbench/contrib/debug/browser/debugStatus';
......@@ -54,6 +54,7 @@ import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneCont
import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from 'vs/platform/quickinput/common/quickAccess';
import { StartDebugQuickAccessProvider } from 'vs/workbench/contrib/debug/browser/debugQuickAccess';
import { DebugProgressContribution } from 'vs/workbench/contrib/debug/browser/debugProgress';
import { DebugTitleContribution } from 'vs/workbench/contrib/debug/browser/debugTitle';
class OpenDebugViewletAction extends ShowViewletAction {
public static readonly ID = VIEWLET_ID;
......@@ -293,9 +294,12 @@ configurationRegistry.registerConfiguration({
}
});
// Register Debug Status
// Register Debug Workbench Contributions
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(DebugStatusContribution, LifecyclePhase.Eventually);
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(DebugProgressContribution, LifecyclePhase.Eventually);
if (isWeb) {
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(DebugTitleContribution, LifecyclePhase.Eventually);
}
// Debug toolbar
......
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
import { IDebugService, State } from 'vs/workbench/contrib/debug/common/debug';
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
import { IHostService } from 'vs/workbench/services/host/browser/host';
import { ITitleService } from 'vs/workbench/services/title/common/titleService';
export class DebugTitleContribution implements IWorkbenchContribution {
private toDispose: IDisposable[] = [];
constructor(
@IDebugService readonly debugService: IDebugService,
@IHostService readonly hostService: IHostService,
@ITitleService readonly titleService: ITitleService
) {
const updateTitle = () => {
if (debugService.state === State.Stopped && !hostService.hasFocus) {
titleService.updateProperties({ prefix: '🔴' });
} else {
titleService.updateProperties({ prefix: '' });
}
};
this.toDispose.push(debugService.onDidChangeState(updateTitle));
this.toDispose.push(hostService.onDidChangeFocus(updateTitle));
}
dispose(): void {
dispose(this.toDispose);
}
}
......@@ -11,6 +11,7 @@ export const ITitleService = createDecorator<ITitleService>('titleService');
export interface ITitleProperties {
isPure?: boolean;
isAdmin?: boolean;
prefix?: string;
}
export interface ITitleService {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册