diff --git a/core/connection.js b/core/connection.js index 11d26cbd4..6e978dedc 100644 --- a/core/connection.js +++ b/core/connection.js @@ -355,34 +355,19 @@ Blockly.Connection.prototype.canConnectToPrevious_ = function(candidate) { return false; } - var firstStatementConnection = - this.sourceBlock_.getFirstStatementConnection(); - var isFirstStatementConnection = this == firstStatementConnection; - var isNextConnection = this == this.sourceBlock_.nextConnection; - - // Complex blocks with no previous connection will not be allowed to connect - // mid-stack. - var sourceHasPreviousConn = this.sourceBlock_.previousConnection != null; - - if (isNextConnection || - (isFirstStatementConnection && !sourceHasPreviousConn)) { - // If the candidate is the first connection in a stack, we can connect. - if (!candidate.targetConnection) { - return true; - } - - var targetBlock = candidate.targetBlock(); - // If it is connected to a real block, game over. - if (!targetBlock.isInsertionMarker()) { - return false; - } - // If it's connected to an insertion marker but that insertion marker - // is the first block in a stack, it's still fine. If that insertion - // marker is in the middle of a stack, it won't work. - return !targetBlock.getPreviousBlock(); + if (!candidate.targetConnection) { + return true; } - console.warn('Returning false by default from canConnectToPrevious_.'); - return false; + + var targetBlock = candidate.targetBlock(); + // If it is connected to a real block, game over. + if (!targetBlock.isInsertionMarker()) { + return false; + } + // If it's connected to an insertion marker but that insertion marker + // is the first block in a stack, it's still fine. If that insertion + // marker is in the middle of a stack, it won't work. + return !targetBlock.getPreviousBlock(); }; /** diff --git a/core/insertion_marker_manager.js b/core/insertion_marker_manager.js index fb2fbd81b..f94677c8d 100644 --- a/core/insertion_marker_manager.js +++ b/core/insertion_marker_manager.js @@ -335,7 +335,8 @@ Blockly.InsertionMarkerManager.prototype.shouldUpdatePreviews_ = function( // Decide whether the new connection has higher priority. if (this.localConnection_ && this.closestConnection_) { // The connection was the same as the current connection. - if (this.closestConnection_ == candidateClosest) { + if (this.closestConnection_ == candidateClosest && + this.localConnection_ == candidateLocal) { return false; } var xDiff = this.localConnection_.x_ + dxy.x - this.closestConnection_.x_;