mirror of
https://github.com/google/blockly.git
synced 2026-01-18 22:37:09 +01:00
Merge pull request #2147 from rachel-fenichel/bugfix/2131
Allow statement connections to connect around block stacks during drags
This commit is contained in:
@@ -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();
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user