From 4f01c9937aa0d66891b6bdfc2cf3ef3e6f3fdcd6 Mon Sep 17 00:00:00 2001 From: Maribeth Moffatt Date: Tue, 20 May 2025 11:58:05 -0700 Subject: [PATCH] fix: focus after drag and deleting comments (#9074) * fix: focus after drag and deleting comments * chore: fix import --- core/block_svg.ts | 2 +- core/comments/rendered_workspace_comment.ts | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/core/block_svg.ts b/core/block_svg.ts index f8e37fcc9..8ea26e354 100644 --- a/core/block_svg.ts +++ b/core/block_svg.ts @@ -856,7 +856,7 @@ export class BlockSvg if (parent) { focusManager.focusNode(parent); } else { - focusManager.focusTree(this.workspace); + setTimeout(() => focusManager.focusTree(this.workspace), 0); } } diff --git a/core/comments/rendered_workspace_comment.ts b/core/comments/rendered_workspace_comment.ts index 76eeb64f1..00359b070 100644 --- a/core/comments/rendered_workspace_comment.ts +++ b/core/comments/rendered_workspace_comment.ts @@ -19,6 +19,7 @@ import {IContextMenu} from '../interfaces/i_contextmenu.js'; import {ICopyable} from '../interfaces/i_copyable.js'; import {IDeletable} from '../interfaces/i_deletable.js'; import {IDraggable} from '../interfaces/i_draggable.js'; +import {IFocusableNode} from '../interfaces/i_focusable_node.js'; import type {IFocusableTree} from '../interfaces/i_focusable_tree.js'; import {IRenderedElement} from '../interfaces/i_rendered_element.js'; import {ISelectable} from '../interfaces/i_selectable.js'; @@ -42,7 +43,8 @@ export class RenderedWorkspaceComment ISelectable, IDeletable, ICopyable, - IContextMenu + IContextMenu, + IFocusableNode { /** The class encompassing the svg elements making up the workspace comment. */ private view: CommentView; @@ -207,7 +209,12 @@ export class RenderedWorkspaceComment /** Disposes of the view. */ override dispose() { this.disposing = true; + const focusManager = getFocusManager(); + if (focusManager.getFocusedNode() === this) { + setTimeout(() => focusManager.focusTree(this.workspace), 0); + } if (!this.view.isDeadOrDying()) this.view.dispose(); + super.dispose(); }