From b47c512dcef7332300b85afa956340fc69dcf047 Mon Sep 17 00:00:00 2001 From: Leonard Teo Date: Fri, 22 Jan 2016 09:57:57 -0500 Subject: [PATCH 1/2] Added observers for sourceview textarea for keyup, focus, blur --- src/views/sourceview.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/views/sourceview.js b/src/views/sourceview.js index 1f16827..6e6fd85 100644 --- a/src/views/sourceview.js +++ b/src/views/sourceview.js @@ -18,6 +18,7 @@ if (!this.textarea) { this.textarea = this.composer.doc.createElement('textarea'); this.textarea.className = "wysihtml5-source-view"; + this._observeTextArea(); } this.textarea.style.width = width + 'px'; this.textarea.style.height = height + 'px'; @@ -48,6 +49,35 @@ this.switchToTextarea(true); } }.bind(this)); + }, + + // Adds event listeners to the textarea + _observeTextArea: function() { + self = this + + // Insert listener for key up + this.textarea.addEventListener("keyup", function(event) { + self.editor.fire(event.type, event).fire(event.type + ":texarea", event); + }, false); + + // Insert listener for focus + this.textarea.addEventListener("focus", function(event) { + self.editor.fire(event.type, event).fire(event.type + ":texarea", event); + + // Save current focus state + setTimeout((function() { + self.focusState = event.target.value; + }).bind(this), 0); + }, false); + + // Insert listener for change + this.textarea.addEventListener("blur", function(event) { + // Check if the state has changed + if (self.focusState != event.target.value) { + self.editor.fire("change", event).fire("change:texarea", event); + } + + }, false); } }); From 3c8a7e6778d2e085e68c9c0732ec9d12c5836ff6 Mon Sep 17 00:00:00 2001 From: Leonard Teo Date: Fri, 22 Jan 2016 10:02:26 -0500 Subject: [PATCH 2/2] Added blur event --- src/views/sourceview.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/views/sourceview.js b/src/views/sourceview.js index 6e6fd85..90848e2 100644 --- a/src/views/sourceview.js +++ b/src/views/sourceview.js @@ -72,6 +72,8 @@ // Insert listener for change this.textarea.addEventListener("blur", function(event) { + self.editor.fire(event.type, event).fire(event.type + ":texarea", event); + // Check if the state has changed if (self.focusState != event.target.value) { self.editor.fire("change", event).fire("change:texarea", event);