diff --git a/packages/scratch-gui/src/lib/vm-listener-hoc.jsx b/packages/scratch-gui/src/lib/vm-listener-hoc.jsx
index 1400651dcc5..ea3e46ebc29 100644
--- a/packages/scratch-gui/src/lib/vm-listener-hoc.jsx
+++ b/packages/scratch-gui/src/lib/vm-listener-hoc.jsx
@@ -1,7 +1,7 @@
import bindAll from 'lodash.bindall';
import PropTypes from 'prop-types';
import React from 'react';
-import VM from '@scratch/scratch-vm';
+import VM from 'scratch-vm';
import {connect} from 'react-redux';
@@ -10,7 +10,7 @@ import {updateBlockDrag} from '../reducers/block-drag';
import {updateMonitors} from '../reducers/monitors';
import {setProjectChanged, setProjectUnchanged} from '../reducers/project-changed';
import {setRunningState, setTurboState, setStartedState} from '../reducers/vm-status';
-import {showExtensionAlert, showStandardAlert, closeAlertWithId} from '../reducers/alerts';
+import {showExtensionAlert} from '../reducers/alerts';
import {updateMicIndicator} from '../reducers/mic-indicator';
/*
@@ -46,7 +46,6 @@ const vmListenerHOC = function (WrappedComponent) {
this.props.vm.on('PROJECT_START', this.props.onGreenFlag);
this.props.vm.on('PERIPHERAL_CONNECTION_LOST_ERROR', this.props.onShowExtensionAlert);
this.props.vm.on('MIC_LISTENING', this.props.onMicListeningUpdate);
- this.props.vm.on('EXTENSION_DATA_LOADING', this.props.onExtensionDataLoading);
}
componentDidMount () {
@@ -68,20 +67,7 @@ const vmListenerHOC = function (WrappedComponent) {
}
}
componentWillUnmount () {
- this.props.vm.removeListener('targetsUpdate', this.handleTargetsUpdate);
- this.props.vm.removeListener('MONITORS_UPDATE', this.props.onMonitorsUpdate);
- this.props.vm.removeListener('BLOCK_DRAG_UPDATE', this.props.onBlockDragUpdate);
- this.props.vm.removeListener('TURBO_MODE_ON', this.props.onTurboModeOn);
- this.props.vm.removeListener('TURBO_MODE_OFF', this.props.onTurboModeOff);
- this.props.vm.removeListener('PROJECT_RUN_START', this.props.onProjectRunStart);
- this.props.vm.removeListener('PROJECT_RUN_STOP', this.props.onProjectRunStop);
- this.props.vm.removeListener('PROJECT_CHANGED', this.handleProjectChanged);
- this.props.vm.removeListener('RUNTIME_STARTED', this.props.onRuntimeStarted);
- this.props.vm.removeListener('PROJECT_START', this.props.onGreenFlag);
this.props.vm.removeListener('PERIPHERAL_CONNECTION_LOST_ERROR', this.props.onShowExtensionAlert);
- this.props.vm.removeListener('MIC_LISTENING', this.props.onMicListeningUpdate);
- this.props.vm.removeListener('EXTENSION_DATA_LOADING', this.props.onExtensionDataLoading);
-
if (this.props.attachKeyboardEvents) {
document.removeEventListener('keydown', this.handleKeyDown);
document.removeEventListener('keyup', this.handleKeyUp);
@@ -98,14 +84,9 @@ const vmListenerHOC = function (WrappedComponent) {
}
}
handleKeyDown (e) {
- // Don't capture keys intended for HTML inputs (e.g. project title).
- // The Blockly workspace is rendered as SVG, so SVG-targeted events
- // should always reach the VM for key-sensing — even when a block has
- // Blockly focus — so that game controls are never silently dropped
- // while the user is on the Code tab.
- if (e.target !== document && e.target !== document.body) {
- if (!(e.target instanceof SVGElement)) return;
- }
+ // Don't capture keys intended for Blockly inputs.
+ if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement ||
+ e.target.isContentEditable) return;
const key = (!e.key || e.key === 'Dead') ? e.keyCode : e.key;
this.props.vm.postIOData('keyboard', {
@@ -135,7 +116,7 @@ const vmListenerHOC = function (WrappedComponent) {
}
render () {
const {
-
+ /* eslint-disable no-unused-vars */
attachKeyboardEvents,
projectChanged,
shouldUpdateTargets,
@@ -145,7 +126,6 @@ const vmListenerHOC = function (WrappedComponent) {
onKeyDown,
onKeyUp,
onMicListeningUpdate,
- onExtensionDataLoading,
onMonitorsUpdate,
onTargetsUpdate,
onProjectChanged,
@@ -156,7 +136,7 @@ const vmListenerHOC = function (WrappedComponent) {
onTurboModeOff,
onTurboModeOn,
onShowExtensionAlert,
-
+ /* eslint-enable no-unused-vars */
...props
} = this.props;
return