fix: disposing of a workspace that has overwritten shadows (#6424)

* fix: disposing of a workspace that has overwritten shadows

* fix: try slightly different placement to fix tests

* fix: add disposing parameter to guaruntee consistent behavior

* chore: wrap properties in a isDeadOrDying method

* chore: make disposing private
This commit is contained in:
Beka Westberg
2022-09-26 12:37:36 -07:00
committed by GitHub
parent 1b6a5d9bb5
commit f2e408b6fa
9 changed files with 42 additions and 29 deletions

View File

@@ -377,7 +377,7 @@ export class FieldVariable extends FieldDropdown {
let variableTypes = this.variableTypes;
if (variableTypes === null) {
// If variableTypes is null, return all variable types.
if (this.sourceBlock_ && !this.sourceBlock_.disposed) {
if (this.sourceBlock_ && !this.sourceBlock_.isDeadOrDying()) {
return this.sourceBlock_.workspace.getVariableTypes();
}
}
@@ -456,7 +456,7 @@ export class FieldVariable extends FieldDropdown {
protected override onItemSelected_(menu: Menu, menuItem: MenuItem) {
const id = menuItem.getValue();
// Handle special cases.
if (this.sourceBlock_ && !this.sourceBlock_.disposed) {
if (this.sourceBlock_ && !this.sourceBlock_.isDeadOrDying()) {
if (id === internalConstants.RENAME_VARIABLE_ID) {
// Rename variable.
Variables.renameVariable(
@@ -515,7 +515,7 @@ export class FieldVariable extends FieldDropdown {
}
const name = this.getText();
let variableModelList: AnyDuringMigration[] = [];
if (this.sourceBlock_ && !this.sourceBlock_.disposed) {
if (this.sourceBlock_ && !this.sourceBlock_.isDeadOrDying()) {
const variableTypes = this.getVariableTypes_();
// Get a copy of the list, so that adding rename and new variable options
// doesn't modify the workspace's list.