diff --git a/src/actions/arrow_navigation.ts b/src/actions/arrow_navigation.ts index d0d6de0e..262cfbcf 100644 --- a/src/actions/arrow_navigation.ts +++ b/src/actions/arrow_navigation.ts @@ -79,7 +79,6 @@ export class ArrowNavigation { // @ts-expect-error private method isHandled = toolbox && toolbox.selectChild(); if (!isHandled && flyout) { - Blockly.getFocusManager().focusTree(flyout.getWorkspace()); this.navigation.defaultFlyoutCursorIfNeeded(workspace); } return true; diff --git a/src/navigation.ts b/src/navigation.ts index e8e9b430..29b0698e 100644 --- a/src/navigation.ts +++ b/src/navigation.ts @@ -306,8 +306,15 @@ export class Navigation { const curNode = flyoutCursor.getCurNode(); const sourceBlock = flyoutCursor.getSourceBlock(); - if (curNode && !this.isFlyoutItemDisposed(curNode, sourceBlock)) + // If the current node is a child of the flyout, nothing needs to be done. + if ( + curNode && + curNode !== flyout.getWorkspace() && + curNode.getFocusableTree() === flyout.getWorkspace() && + !this.isFlyoutItemDisposed(curNode, sourceBlock) + ) { return false; + } const flyoutContents = flyout.getContents(); const defaultFlyoutItem =