From 24627f0b3ed42193165a8f9dd4031abcab7b342f Mon Sep 17 00:00:00 2001 From: Sam El-Husseini Date: Tue, 19 Nov 2019 08:41:00 -0800 Subject: [PATCH] Fix zelos flickering in flyout (#3448) --- core/flyout_base.js | 8 ++++---- core/renderers/zelos/path_object.js | 14 ++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/core/flyout_base.js b/core/flyout_base.js index 99d22fbc8..85b69cd77 100644 --- a/core/flyout_base.js +++ b/core/flyout_base.js @@ -585,13 +585,13 @@ Blockly.Flyout.prototype.addBlockListeners_ = function(root, block, rect) { this.blockMouseDown_(block))); this.listeners_.push(Blockly.bindEventWithChecks_(rect, 'mousedown', null, this.blockMouseDown_(block))); - this.listeners_.push(Blockly.bindEvent_(root, 'mouseover', block, + this.listeners_.push(Blockly.bindEvent_(root, 'mouseenter', block, block.addSelect)); - this.listeners_.push(Blockly.bindEvent_(root, 'mouseout', block, + this.listeners_.push(Blockly.bindEvent_(root, 'mouseleave', block, block.removeSelect)); - this.listeners_.push(Blockly.bindEvent_(rect, 'mouseover', block, + this.listeners_.push(Blockly.bindEvent_(rect, 'mouseenter', block, block.addSelect)); - this.listeners_.push(Blockly.bindEvent_(rect, 'mouseout', block, + this.listeners_.push(Blockly.bindEvent_(rect, 'mouseleave', block, block.removeSelect)); }; diff --git a/core/renderers/zelos/path_object.js b/core/renderers/zelos/path_object.js index ba613164c..537e015a9 100644 --- a/core/renderers/zelos/path_object.js +++ b/core/renderers/zelos/path_object.js @@ -103,12 +103,14 @@ Blockly.zelos.PathObject.prototype.flipRTL = function() { Blockly.zelos.PathObject.prototype.updateSelected = function(enable) { this.setClass_('blocklySelected', enable); if (enable) { - this.svgPathSelected_ = - /** @type {!SVGElement} */ (this.svgPath.cloneNode(true)); - this.svgPathSelected_.setAttribute('fill', 'none'); - this.svgPathSelected_.setAttribute('filter', - 'url(#' + this.constants_.highlightGlowFilterId + ')'); - this.svgRoot.appendChild(this.svgPathSelected_); + if (!this.svgPathSelected_) { + this.svgPathSelected_ = + /** @type {!SVGElement} */ (this.svgPath.cloneNode(true)); + this.svgPathSelected_.setAttribute('fill', 'none'); + this.svgPathSelected_.setAttribute('filter', + 'url(#' + this.constants_.highlightGlowFilterId + ')'); + this.svgRoot.appendChild(this.svgPathSelected_); + } } else { if (this.svgPathSelected_) { this.svgRoot.removeChild(this.svgPathSelected_);