From 7212563e3a4974a5ab9dc079e2df828b083cac76 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Mon, 26 Apr 2010 13:44:38 +0200 Subject: [PATCH] fix repeated key events for firefox --- src/ace/KeyBinding.js | 2 +- src/ace/ace.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/ace/KeyBinding.js b/src/ace/KeyBinding.js index f105cb18..fe7e9e8d 100644 --- a/src/ace/KeyBinding.js +++ b/src/ace/KeyBinding.js @@ -4,7 +4,7 @@ ace.KeyBinding = function(element, editor) { var keys = this.keys; - ace.addListener(element, "keydown", function(e) { + ace.addKeyListener(element, function(e) { var key = e.keyCode; var selection = editor.getSelection(); diff --git a/src/ace/ace.js b/src/ace/ace.js index ba1ad530..f05f9416 100644 --- a/src/ace/ace.js +++ b/src/ace/ace.js @@ -272,4 +272,22 @@ ace.addTripleClickListener = function(el, callback) { ace.autoremoveListener(el, "mousedown", callback, 300); }, 300); }); +}; + +ace.addKeyListener = function(el, callback) { + var lastDown = null; + + ace.addListener(el, "keydown", function(e) { + lastDown = e.keyCode; + return callback(e); + }); + + ace.addListener(el, "keypress", function(e) { + var keyId = e.keyCode; + if (lastDown !== keyId) { + return callback(e); + } else { + lastDown = null; + } + }); }; \ No newline at end of file