Skip to content

Commit 2cae22e

Browse files
committed
fix: A few things for the plugin.
This exposes FocusableTreeTraverser for the plugin's use. It also fixes a few callback issues with FocusManager that were missed in RaspberryPiFoundation#8909.
1 parent cb2148b commit 2cae22e

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

core/blockly.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,9 @@ import {
111111
ReturnEphemeralFocus,
112112
getFocusManager,
113113
} from './focus_manager.js';
114+
import {
115+
FocusableTreeTraverser,
116+
} from './utils/focusable_tree_traverser.js';
114117
import {CodeGenerator} from './generator.js';
115118
import {Gesture} from './gesture.js';
116119
import {Grid} from './grid.js';
@@ -527,6 +530,7 @@ export {
527530
FlyoutMetricsManager,
528531
FlyoutSeparator,
529532
FocusManager,
533+
FocusableTreeTraverser,
530534
CodeGenerator as Generator,
531535
Gesture,
532536
Grid,

core/focus_manager.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ export class FocusManager {
247247

248248
const prevNode = this.focusedNode;
249249
const prevTree = prevNode?.getFocusableTree();
250-
if (prevNode && prevTree !== nextTree) {
250+
if (prevNode) {
251251
this.passivelyFocusNode(prevNode, nextTree);
252252
}
253253

@@ -374,7 +374,9 @@ export class FocusManager {
374374
// node's focusable element (which *is* allowed to be invisible until the
375375
// node needs to be focused).
376376
this.lockFocusStateChanges = true;
377-
node.getFocusableTree().onTreeFocus(node, prevTree);
377+
if (node.getFocusableTree() !== prevTree) {
378+
node.getFocusableTree().onTreeFocus(node, prevTree);
379+
}
378380
node.onNodeFocus();
379381
this.lockFocusStateChanges = false;
380382

@@ -399,11 +401,15 @@ export class FocusManager {
399401
nextTree: IFocusableTree | null,
400402
): void {
401403
this.lockFocusStateChanges = true;
402-
node.getFocusableTree().onTreeBlur(nextTree);
404+
if (node.getFocusableTree() !== nextTree) {
405+
node.getFocusableTree().onTreeBlur(nextTree);
406+
}
403407
node.onNodeBlur();
404408
this.lockFocusStateChanges = false;
405409

406-
this.setNodeToVisualPassiveFocus(node);
410+
if (node.getFocusableTree() !== nextTree) {
411+
this.setNodeToVisualPassiveFocus(node);
412+
}
407413
}
408414

409415
/**

0 commit comments

Comments
 (0)