From 839d2b02f10e77f22383d59dac28603d524882b4 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Mon, 28 Mar 2022 13:04:25 -0400 Subject: [PATCH 1/2] fix #145866 --- .../contrib/terminal/browser/terminalFindWidget.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts b/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts index e4cda779a2b22..1775293d52f68 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts @@ -7,8 +7,9 @@ import { SimpleFindWidget } from 'vs/workbench/contrib/codeEditor/browser/find/s import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey'; import { FindReplaceState } from 'vs/editor/contrib/find/browser/findState'; -import { ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; +import { ITerminalGroupService, ITerminalService } from 'vs/workbench/contrib/terminal/browser/terminal'; import { TerminalContextKeys } from 'vs/workbench/contrib/terminal/common/terminalContextKey'; +import { TerminalLocation } from 'vs/platform/terminal/common/terminal'; export class TerminalFindWidget extends SimpleFindWidget { protected _findInputFocused: IContextKey; @@ -19,7 +20,8 @@ export class TerminalFindWidget extends SimpleFindWidget { findState: FindReplaceState, @IContextViewService _contextViewService: IContextViewService, @IContextKeyService private readonly _contextKeyService: IContextKeyService, - @ITerminalService private readonly _terminalService: ITerminalService + @ITerminalService private readonly _terminalService: ITerminalService, + @ITerminalGroupService private readonly _terminalGroupService: ITerminalGroupService ) { super(_contextViewService, _contextKeyService, findState, true); this._register(findState.onFindReplaceStateChange(() => { @@ -68,7 +70,13 @@ export class TerminalFindWidget extends SimpleFindWidget { if (instance) { instance.focus(); } - instance?.xterm?.clearSearchDecorations(); + if (this._terminalService.activeInstance?.target !== TerminalLocation.Editor && this._terminalGroupService.activeGroup) { + for (const terminal of this._terminalGroupService.activeGroup?.terminalInstances) { + terminal.xterm?.clearSearchDecorations(); + } + } else { + instance?.xterm?.clearSearchDecorations(); + } } protected _onInputChanged() { From a6c1b0dd4e2e4c6c7a936445db62246172bd29f3 Mon Sep 17 00:00:00 2001 From: meganrogge Date: Mon, 28 Mar 2022 13:16:48 -0400 Subject: [PATCH 2/2] clean up --- .../contrib/terminal/browser/terminalFindWidget.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts b/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts index 1775293d52f68..df4c11e3dac0f 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalFindWidget.ts @@ -70,8 +70,11 @@ export class TerminalFindWidget extends SimpleFindWidget { if (instance) { instance.focus(); } - if (this._terminalService.activeInstance?.target !== TerminalLocation.Editor && this._terminalGroupService.activeGroup) { - for (const terminal of this._terminalGroupService.activeGroup?.terminalInstances) { + // Terminals in a group currently share a find widget, so hide + // all decorations for terminals in this group + const activeGroup = this._terminalGroupService.activeGroup; + if (instance?.target !== TerminalLocation.Editor && activeGroup) { + for (const terminal of activeGroup.terminalInstances) { terminal.xterm?.clearSearchDecorations(); } } else {