@@ -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