From c85a33752b8d4e7e06fe5d464afbe96a2f6e2504 Mon Sep 17 00:00:00 2001 From: kangax Date: Wed, 19 Feb 2014 15:25:50 -0500 Subject: [PATCH] Fix iText stealing focus --- src/mixins/itext_behavior.mixin.js | 1 - src/mixins/itext_key_behavior.mixin.js | 17 ++++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/mixins/itext_behavior.mixin.js b/src/mixins/itext_behavior.mixin.js index 261593b2..8d28db8f 100644 --- a/src/mixins/itext_behavior.mixin.js +++ b/src/mixins/itext_behavior.mixin.js @@ -8,7 +8,6 @@ * Initializes all the interactive behavior of IText */ initBehavior: function() { - this.initKeyHandlers(); this.initCursorSelectionHandlers(); this.initDoubleClickSimulation(); }, diff --git a/src/mixins/itext_key_behavior.mixin.js b/src/mixins/itext_key_behavior.mixin.js index 210e1d9c..60b502e5 100644 --- a/src/mixins/itext_key_behavior.mixin.js +++ b/src/mixins/itext_key_behavior.mixin.js @@ -1,14 +1,5 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ { - /** - * Initializes key handlers - */ - initKeyHandlers: function() { - fabric.util.addListener(fabric.document, 'keydown', this.onKeyDown.bind(this)); - fabric.util.addListener(fabric.document, 'keypress', this.onKeyPress.bind(this)); - fabric.util.addListener(fabric.document, 'click', this.onClick.bind(this)); - }, - /** * Initializes hidden textarea (needed to bring up keyboard in iOS) */ @@ -19,6 +10,14 @@ fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.protot this.hiddenTextarea.style.cssText = 'position: absolute; top: 0; left: -9999px'; fabric.document.body.appendChild(this.hiddenTextarea); + + fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this)); + fabric.util.addListener(this.hiddenTextarea, 'keypress', this.onKeyPress.bind(this)); + + if (!this._clickHandlerInitialized && this.canvas) { + fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this)); + this._clickHandlerInitialized = true; + } }, /**