Skip to content

Commit 782a84e

Browse files
committed
fix: Use toolbox subclass instead of monkeypatch.
1 parent f1ddc18 commit 782a84e

File tree

5 files changed

+27
-14
lines changed

5 files changed

+27
-14
lines changed

src/navigation_controller.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010
* @author [email protected] (Abby Schmiedt)
1111
*/
1212

13-
import './toolbox_monkey_patch';
14-
1513
import * as Blockly from 'blockly/core';
1614
import {
1715
ShortcutRegistry,
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @license
3+
* Copyright 2025 Google LLC
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
import * as Blockly from 'blockly/core';
8+
9+
export class NavigationDeferringToolbox extends Blockly.Toolbox {
10+
protected override onKeyDown_(e: KeyboardEvent) {
11+
// No-op, prevent keyboard handling by superclass in order to defer to
12+
// global keyboard navigation.
13+
}
14+
}
15+
16+
export function registerNavigationDeferringToolbox() {
17+
Blockly.registry.register(
18+
Blockly.registry.Type.TOOLBOX,
19+
Blockly.registry.DEFAULT,
20+
NavigationDeferringToolbox,
21+
true,
22+
);
23+
}

src/toolbox_monkey_patch.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

test/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'blockly/blocks';
1010
import {installAllBlocks as installColourBlocks} from '@blockly/field-colour';
1111
import {KeyboardNavigation} from '../src/index';
1212
import {registerFlyoutCursor} from '../src/flyout_cursor';
13+
import {registerNavigationDeferringToolbox} from '../src/navigation_deferring_toolbox';
1314
// @ts-expect-error No types in js file
1415
import {forBlock} from './blocks/p5_generators';
1516
// @ts-expect-error No types in js file
@@ -94,6 +95,7 @@ function createWorkspace(): Blockly.WorkspaceSvg {
9495
// Must be called before injection.
9596
KeyboardNavigation.registerKeyboardNavigationStyles();
9697
registerFlyoutCursor();
98+
registerNavigationDeferringToolbox();
9799
const workspace = Blockly.inject(blocklyDiv, injectOptions);
98100

99101
Blockly.ContextMenuItems.registerCommentOptions();

test/webdriverio/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'blockly/blocks';
1010
import {installAllBlocks as installColourBlocks} from '@blockly/field-colour';
1111
import {KeyboardNavigation} from '../../src/index';
1212
import {registerFlyoutCursor} from '../../src/flyout_cursor';
13+
import {registerNavigationDeferringToolbox} from '../../src/navigation_deferring_toolbox';
1314
// @ts-expect-error No types in js file
1415
import {blocks} from './../blocks/p5_blocks';
1516
// @ts-expect-error No types in js file
@@ -82,6 +83,7 @@ function createWorkspace(): Blockly.WorkspaceSvg {
8283
// Must be called before injection.
8384
KeyboardNavigation.registerKeyboardNavigationStyles();
8485
registerFlyoutCursor();
86+
registerNavigationDeferringToolbox();
8587
const workspace = Blockly.inject(blocklyDiv, injectOptions);
8688

8789
Blockly.ContextMenuItems.registerCommentOptions();

0 commit comments

Comments
 (0)