From 62d118afc71122d0ae8b6afb0c7c7459057310a5 Mon Sep 17 00:00:00 2001 From: "Brian E. Granger" Date: Wed, 5 Feb 2014 19:15:01 -0800 Subject: [PATCH 1/2] Clear timeout in multi-press keyboard shortcuts. --- IPython/html/static/notebook/js/keyboardmanager.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/IPython/html/static/notebook/js/keyboardmanager.js b/IPython/html/static/notebook/js/keyboardmanager.js index 708ed733f..1db72680d 100644 --- a/IPython/html/static/notebook/js/keyboardmanager.js +++ b/IPython/html/static/notebook/js/keyboardmanager.js @@ -540,6 +540,7 @@ var IPython = (function (IPython) { var ShortcutManager = function (delay) { this._shortcuts = {} this._counts = {} + this._timers = {} this.delay = delay || 800; // delay in milliseconds } @@ -633,17 +634,21 @@ var IPython = (function (IPython) { ShortcutManager.prototype.count_handler = function (shortcut, event, data) { var that = this; var c = this._counts; + var t = this._timers; + var timer = null; if (c[shortcut] === data.count-1) { c[shortcut] = 0; + var timer = t[shortcut]; + if (timer) {clearTimeout(timer);} return data.handler(event); } else { c[shortcut] = c[shortcut] + 1; - setTimeout(function () { + timer = setTimeout(function () { c[shortcut] = 0; }, that.delay); + t[shortcut] = timer; } return false; - } ShortcutManager.prototype.call_handler = function (event) { From 2d1f3c86d17e13f54a92eab24856ee4dc5200011 Mon Sep 17 00:00:00 2001 From: "Brian E. Granger" Date: Wed, 5 Feb 2014 23:05:40 -0800 Subject: [PATCH 2/2] Delete old timeout. --- IPython/html/static/notebook/js/keyboardmanager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IPython/html/static/notebook/js/keyboardmanager.js b/IPython/html/static/notebook/js/keyboardmanager.js index 1db72680d..c5611affc 100644 --- a/IPython/html/static/notebook/js/keyboardmanager.js +++ b/IPython/html/static/notebook/js/keyboardmanager.js @@ -639,7 +639,7 @@ var IPython = (function (IPython) { if (c[shortcut] === data.count-1) { c[shortcut] = 0; var timer = t[shortcut]; - if (timer) {clearTimeout(timer);} + if (timer) {clearTimeout(timer); delete t[shortcut];} return data.handler(event); } else { c[shortcut] = c[shortcut] + 1;