From 267877115f83fe202056a144ebb9f3c720808c7f Mon Sep 17 00:00:00 2001 From: Sam El-Husseini Date: Tue, 7 Jan 2020 13:52:57 -0800 Subject: [PATCH] Adjust single field row alignment so that it takes up less vertical space (#3557) --- core/renderers/zelos/drawer.js | 6 +++++- core/renderers/zelos/info.js | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/core/renderers/zelos/drawer.js b/core/renderers/zelos/drawer.js index 2ee56e555..2effb059f 100644 --- a/core/renderers/zelos/drawer.js +++ b/core/renderers/zelos/drawer.js @@ -98,10 +98,14 @@ Blockly.zelos.Drawer.prototype.drawOutline_ = function() { * @protected */ Blockly.zelos.Drawer.prototype.drawRightSideRow_ = function(row) { + if (row.height <= 0) { + return; + } if (row.precedesStatement || row.followsStatement) { var cornerHeight = this.constants_.INSIDE_CORNERS.rightHeight; var remainingHeight = row.height - - (row.precedesStatement ? cornerHeight : 0); + (row.precedesStatement ? cornerHeight : 0) - + (row.followsStatement ? cornerHeight : 0); this.outlinePath_ += (row.followsStatement ? this.constants_.INSIDE_CORNERS.pathBottomRight : '') + diff --git a/core/renderers/zelos/info.js b/core/renderers/zelos/info.js index c4e8b0ef3..45e7403c6 100644 --- a/core/renderers/zelos/info.js +++ b/core/renderers/zelos/info.js @@ -497,6 +497,7 @@ Blockly.zelos.RenderInfo.prototype.finalizeVerticalAlignment_ = function() { Blockly.blockRendering.Types.isInputRow(row)) { // Determine if the input row has non-shadow connected blocks. var hasNonShadowConnectedBlocks = false; + var hasSingleTextOrImageField = null; var MIN_VERTICAL_TIGHTNESTING_HEIGHT = 40; for (var j = 0, elem; (elem = row.elements[j]); j++) { if (Blockly.blockRendering.Types.isInlineInput(elem) && @@ -505,12 +506,21 @@ Blockly.zelos.RenderInfo.prototype.finalizeVerticalAlignment_ = function() { MIN_VERTICAL_TIGHTNESTING_HEIGHT) { hasNonShadowConnectedBlocks = true; break; + } else if (Blockly.blockRendering.Types.isField(elem) && + (elem.field instanceof Blockly.FieldLabel || + elem.field instanceof Blockly.FieldImage)) { + hasSingleTextOrImageField = + hasSingleTextOrImageField == null ? true : false; } } + // Reduce the previous and next spacer's height. if (hasNonShadowConnectedBlocks) { - // Reduce the previous and next spacer's height. - prevSpacer.height -= this.constants_.GRID_UNIT; - nextSpacer.height -= this.constants_.GRID_UNIT; + prevSpacer.height -= this.constants_.SMALL_PADDING; + nextSpacer.height -= this.constants_.SMALL_PADDING; + } else if (i != 2 && hasSingleTextOrImageField) { + prevSpacer.height -= this.constants_.SMALL_PADDING; + nextSpacer.height -= this.constants_.SMALL_PADDING; + row.height -= this.constants_.MEDIUM_PADDING; } } else if (i != 2 && hasPrevNotch && !hasNextNotch) { // Add a small padding so the notch doesn't interfere with inputs/fields.