From 75de6cb905509f1fcf8f114562cefecd75335f0e Mon Sep 17 00:00:00 2001 From: Robert Knight <95928279+microbit-robert@users.noreply.github.com> Date: Thu, 28 May 2026 20:54:55 +0100 Subject: [PATCH] fix: Improve fallback for getInitialCandidate (#9941) * fix: Improve fallback for getInitialCandidate * Improve variable name --- .../blockly/core/dragging/block_drag_strategy.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/packages/blockly/core/dragging/block_drag_strategy.ts b/packages/blockly/core/dragging/block_drag_strategy.ts index 2a2bd0aba..b86ae8b97 100644 --- a/packages/blockly/core/dragging/block_drag_strategy.ts +++ b/packages/blockly/core/dragging/block_drag_strategy.ts @@ -1238,6 +1238,19 @@ export class BlockDragStrategy implements IDragStrategy { return this.pairToCandidate(parentPair); } + // Fall back to the nearest parent block that has a compatible connection. + // This handles the case where a nested value block (e.g. a number input) + // has passive focus but the dragged block is a statement block that should + // be inserted after the containing statement block. + let parentBlock = passiveBlock.getSurroundParent(); + while (parentBlock) { + const pair = this.allConnectionPairs.find( + (pair) => pair.neighbour.getSourceBlock() === parentBlock, + ); + if (pair) return this.pairToCandidate(pair); + parentBlock = parentBlock.getSurroundParent(); + } + return null; }