From 87003ac4edcdd6060a0ac21273af3f6319c551e9 Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Fri, 20 May 2011 23:30:09 +0200 Subject: [PATCH] Reuse former session of second split. Add destroy function that stops some timeouts. --- demo/demo.js | 6 ++++-- lib/ace/editor.js | 4 ++++ lib/ace/layer/cursor.js | 8 ++++++-- lib/ace/layer/text.js | 6 +++++- lib/ace/split.js | 1 + lib/ace/virtual_renderer.js | 5 +++++ 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/demo/demo.js b/demo/demo.js index d3a68480..4a59a8f7 100644 --- a/demo/demo.js +++ b/demo/demo.js @@ -369,7 +369,10 @@ exports.launch = function(env) { bindDropdown("split", function(value) { var sp = env.split; if (value == "none") { - sp.setSplits(1); + if (sp.getSplits() == 2) { + secondSplitSession = sp.getEditor(1).session; + sp.setSplits(1); + } } else { var newEditor = (sp.getSplits() == 1); if (value == "below") { @@ -383,7 +386,6 @@ exports.launch = function(env) { var session = secondSplitSession || sp.getEditor(0).session; var newSession = sp.setSession(session, 1); newSession.name = session.name; - secondSplitSession = newSession; } } }); diff --git a/lib/ace/editor.js b/lib/ace/editor.js index 1be117ab..f03e95e3 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -1123,6 +1123,10 @@ var Editor =function(renderer, session) { this.session.getUndoManager().redo(); }; + this.destroy = function() { + this.renderer.destroy(); + } + }).call(Editor.prototype); diff --git a/lib/ace/layer/cursor.js b/lib/ace/layer/cursor.js index a1cd4698..224b638f 100644 --- a/lib/ace/layer/cursor.js +++ b/lib/ace/layer/cursor.js @@ -123,16 +123,20 @@ var Cursor = function(parentEl) { if (this.isVisible) { this.element.appendChild(this.cursor); } - + if (this.session.getOverwrite()) { dom.addCssClass(this.cursor, "ace_overwrite"); } else { dom.removeCssClass(this.cursor, "ace_overwrite"); } - + this.restartTimer(); }; + this.destroy = function() { + clearInterval(this.blinkId); + } + }).call(Cursor.prototype); exports.Cursor = Cursor; diff --git a/lib/ace/layer/text.js b/lib/ace/layer/text.js index 243e2371..88a4e1bf 100644 --- a/lib/ace/layer/text.js +++ b/lib/ace/layer/text.js @@ -82,7 +82,7 @@ var Text = function(parentEl) { this.$pollSizeChanges = function() { var self = this; - setInterval(function() { + this.$pollSizeChangesTimer = setInterval(function() { self.checkForSizeChanges(); }, 500); }; @@ -517,6 +517,10 @@ var Text = function(parentEl) { this.$renderLineCore(stringBuilder, row, renderTokens, splits); }; + this.destroy = function() { + clearInterval(this.$pollSizeChangesTimer); + }; + }).call(Text.prototype); exports.Text = Text; diff --git a/lib/ace/split.js b/lib/ace/split.js index 57054c0f..fcbe2a14 100644 --- a/lib/ace/split.js +++ b/lib/ace/split.js @@ -103,6 +103,7 @@ var Split = function(container, theme, splits) { } else { while (this.$splits > splits) { editor = this.$editors[this.$splits - 1]; + editor.destroy(); this.$container.removeChild(editor.container); this.$editors.pop(); this.$splits --; diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 3001d0ce..a9687660 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -794,6 +794,11 @@ var VirtualRenderer = function(container, theme) { dom.removeCssClass(this.container, style) }; + this.destroy = function() { + this.$textLayer.destroy(); + this.$cursorLayer.destroy(); + } + }).call(VirtualRenderer.prototype); exports.VirtualRenderer = VirtualRenderer;