Skip to content

Commit 3c18dfd

Browse files
committed
another corner case regarding removing silence blocks
1 parent 50bc8bd commit 3c18dfd

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

js/blocks.js

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,7 @@ function Blocks () {
884884
var lastc = thisBlockobj.connections.length - 1;
885885
var i = thisBlockobj.connections[lastc];
886886
if (this.blockList[i].name === 'rest2') {
887-
var silenceBlock = i; // thisBlockobj.connections[i];
887+
var silenceBlock = i;
888888
var silenceBlockobj = this.blockList[silenceBlock];
889889
silenceBlockobj.hide();
890890
silenceBlockobj.trash = true;
@@ -898,23 +898,31 @@ function Blocks () {
898898

899899
this.deletePreviousDefault = function (thisBlock) {
900900
// Remove the Silence block from a Note block if another block
901-
// is inserted just after the Silence block.
901+
// is inserted anywhere after the Silence block.
902902
var thisBlockobj = this.blockList[thisBlock];
903-
if (thisBlockobj && this.blockList[thisBlockobj.connections[0]] && this.blockList[thisBlockobj.connections[0]].name === 'rest2') {
904-
var silenceBlock = thisBlockobj.connections[0];
905-
var silenceBlockobj = this.blockList[silenceBlock];
906-
silenceBlockobj.hide();
907-
silenceBlockobj.trash = true;
908-
909-
for (var i = 0; i < this.blockList[silenceBlockobj.connections[0]].connections.length; i++) {
910-
if (this.blockList[silenceBlockobj.connections[0]].connections[i] === silenceBlock) {
911-
this.blockList[silenceBlockobj.connections[0]].connections[i] = thisBlock;
912-
break;
913-
}
914-
}
903+
while (thisBlockobj.connections[0] != null) {
904+
var i = thisBlockobj.connections[0];
905+
if (['newnote', 'osctime'].indexOf(this.blockList[i].name) !== -1) {
906+
break;
907+
} else if (this.blockList[i].name === 'rest2') {
908+
var silenceBlock = i;
909+
var silenceBlockobj = this.blockList[silenceBlock];
910+
silenceBlockobj.hide();
911+
silenceBlockobj.trash = true;
915912

916-
thisBlockobj.connections[0] = silenceBlockobj.connections[0];
917-
}
913+
for (var c = 0; c < this.blockList[silenceBlockobj.connections[0]].connections.length; c++) {
914+
if (this.blockList[silenceBlockobj.connections[0]].connections[c] === silenceBlock) {
915+
this.blockList[silenceBlockobj.connections[0]].connections[c] = this.blockList.indexOf(thisBlockobj);
916+
break;
917+
}
918+
}
919+
920+
thisBlockobj.connections[0] = silenceBlockobj.connections[0];
921+
break;
922+
} else {
923+
thisBlockobj = this.blockList[i];
924+
}
925+
}
918926

919927
return thisBlockobj.connections[0];
920928
};

0 commit comments

Comments
 (0)