From 774c5c3cb7419e913cf65bf8a7cfef2743b88ad6 Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Thu, 7 Jun 2018 19:37:25 -0700 Subject: [PATCH] Fix #48911 --- .../parts/search/browser/searchActions.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/parts/search/browser/searchActions.ts b/src/vs/workbench/parts/search/browser/searchActions.ts index c7ac0da7eac..c9d05ffe457 100644 --- a/src/vs/workbench/parts/search/browser/searchActions.ts +++ b/src/vs/workbench/parts/search/browser/searchActions.ts @@ -586,7 +586,11 @@ export class RemoveAction extends AbstractSearchAndReplaceAction { } public run(): TPromise { - let nextFocusElement = this.getElementToFocusAfterRemoved(this.viewer, this.element); + const currentFocusElement = this.viewer.getFocus(); + const nextFocusElement = !currentFocusElement || currentFocusElement instanceof SearchResult || elementIsEqualOrParent(currentFocusElement, this.element) ? + this.getElementToFocusAfterRemoved(this.viewer, this.element) : + null; + if (nextFocusElement) { this.viewer.reveal(nextFocusElement); this.viewer.setFocus(nextFocusElement); @@ -611,7 +615,16 @@ export class RemoveAction extends AbstractSearchAndReplaceAction { this.viewer.domFocus(); return this.viewer.refresh(elementToRefresh); } +} + +function elementIsEqualOrParent(element: RenderableMatch, testParent: RenderableMatch | SearchResult): boolean { + do { + if (element === testParent) { + return true; + } + } while (!(element.parent() instanceof SearchResult) && (element = element.parent())); + return false; } export class ReplaceAllAction extends AbstractSearchAndReplaceAction { -- GitLab