From 5e9c01bb63d39f1c7a3d68d1c8c2f36c73e821bc Mon Sep 17 00:00:00 2001 From: isidor Date: Mon, 4 May 2020 15:44:39 +0200 Subject: [PATCH] debug: introduce contribution for update title --- .../debug/browser/debug.contribution.ts | 8 +++-- .../contrib/debug/browser/debugTitle.ts | 35 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/vs/workbench/contrib/debug/browser/debugTitle.ts diff --git a/src/vs/workbench/contrib/debug/browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/browser/debug.contribution.ts index b6255525c32..56a983c9796 100644 --- a/src/vs/workbench/contrib/debug/browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/browser/debug.contribution.ts @@ -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(WorkbenchExtensions.Workbench).registerWorkbenchContribution(DebugStatusContribution, LifecyclePhase.Eventually); Registry.as(WorkbenchExtensions.Workbench).registerWorkbenchContribution(DebugProgressContribution, LifecyclePhase.Eventually); +if (isWeb) { + Registry.as(WorkbenchExtensions.Workbench).registerWorkbenchContribution(DebugTitleContribution, LifecyclePhase.Eventually); +} // Debug toolbar diff --git a/src/vs/workbench/contrib/debug/browser/debugTitle.ts b/src/vs/workbench/contrib/debug/browser/debugTitle.ts new file mode 100644 index 00000000000..376d5abb991 --- /dev/null +++ b/src/vs/workbench/contrib/debug/browser/debugTitle.ts @@ -0,0 +1,35 @@ +/*--------------------------------------------------------------------------------------------- + * 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); + } +} -- GitLab