fix: improve reliability of block value reporting #77
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR, in conjunction with gonfunko/scratch-gui#14, makes block value reporting work consistently for all report-able blocks. Previously, reporting blocks that were present for both the stage and sprites didn't report their values correctly. This seems to be because block recycling interfered with the VM's monitoring of the state of truth, which has been resolved by excluding reporting blocks (those with an output) from recycling.
Finding of fields for blocks when reporting is invoked has been made more reliable, vs just assuming that there would be one in the fieldrow of the first item in a block's inputList.
Finally, this PR disables the normal toolbox refresh method, since Scratch manually manages toolbox refreshes for performance reasons. An additional method to force a refresh has been added for use by scratch-gui.