diff --git a/src/mixins/itext_behavior.mixin.js b/src/mixins/itext_behavior.mixin.js index 9cc41515..4ded8cb0 100644 --- a/src/mixins/itext_behavior.mixin.js +++ b/src/mixins/itext_behavior.mixin.js @@ -582,7 +582,7 @@ } this.styles[lineIndex + 1] = newLineStyles; } - this._clearCache(); + this._forceClearCache = true; }, /** @@ -612,7 +612,7 @@ this.styles[lineIndex][charIndex] = style || clone(currentLineStyles[charIndex - 1]); - this._clearCache(); + this._forceClearCache = true; }, /** diff --git a/src/mixins/itext_key_behavior.mixin.js b/src/mixins/itext_key_behavior.mixin.js index 83ed8ea2..c6d60736 100644 --- a/src/mixins/itext_key_behavior.mixin.js +++ b/src/mixins/itext_key_behavior.mixin.js @@ -579,7 +579,6 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot this._removeExtraneousStyles(); - this._clearCache(); this.canvas && this.canvas.renderAll(); this.setCoords(); diff --git a/src/shapes/itext.class.js b/src/shapes/itext.class.js index 6f2eec5c..277b37df 100644 --- a/src/shapes/itext.class.js +++ b/src/shapes/itext.class.js @@ -283,7 +283,7 @@ } } /* not included in _extendStyles to avoid clearing cache more than once */ - this._clearCache(); + this._forceClearCache = true; return this; }, diff --git a/src/shapes/text.class.js b/src/shapes/text.class.js index 6b77f490..51314284 100644 --- a/src/shapes/text.class.js +++ b/src/shapes/text.class.js @@ -682,6 +682,10 @@ */ _shouldClearCache: function() { var shouldClear = false; + if (this._forceClearCache) { + this._forceClearCache = false; + return true; + } for (var prop in this._dimensionAffectingProps) { if (this['__' + prop] !== this[prop]) { this['__' + prop] = this[prop];