From 118cd456107a4770af1781cf9d7c5908060ddc18 Mon Sep 17 00:00:00 2001 From: chrisgarrity <chrisg@media.mit.edu> Date: Tue, 17 Jul 2018 18:37:19 -0400 Subject: [PATCH] Only update blocks locale when blocks are visible In `blocks.jsx` only call setLocale if visible. Depends on `getLocale` being added to VM to know when global locale changed while not visible making the VM out of sync. --- src/containers/blocks.jsx | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/containers/blocks.jsx b/src/containers/blocks.jsx index 1de665e33..6ac3c7d31 100644 --- a/src/containers/blocks.jsx +++ b/src/containers/blocks.jsx @@ -94,7 +94,9 @@ class Blocks extends React.Component { addFunctionListener(this.workspace, 'zoom', this.onWorkspaceMetricsChange); this.attachVM(); - this.setLocale(); + if (this.props.isVisible) { + this.setLocale(); + } analytics.pageview('/editors/blocks'); } @@ -117,9 +119,9 @@ class Blocks extends React.Component { this.ScratchBlocks.hideChaff(); } - if (prevProps.locale !== this.props.locale) { - this.setLocale(); - } + // if (prevProps.locale !== this.props.locale) { + // this.setLocale(); + // } if (prevProps.toolboxXML !== this.props.toolboxXML) { // rather than update the toolbox "sync" -- update it in the next frame @@ -138,10 +140,17 @@ class Blocks extends React.Component { // @todo hack to resize blockly manually in case resize happened while hidden // @todo hack to reload the workspace due to gui bug #413 if (this.props.isVisible) { // Scripts tab + this.workspace.setVisible(true); - this.props.vm.refreshWorkspace(); + if (prevProps.locale !== this.props.locale || this.props.locale !== this.props.vm.getLocale()) { + this.setLocale(); + } else { + this.props.vm.refreshWorkspace(); + } + // Re-enable toolbox refreshes without causing one. See #updateToolbox for more info. this.workspace.toolboxRefreshEnabled_ = true; + // this.workspace.setToolboxRefreshEnabled(true); window.dispatchEvent(new Event('resize')); } else { this.workspace.setVisible(false); -- GitLab