From 7f5db3f6b43e3ad85d359c2f065044687f4baef6 Mon Sep 17 00:00:00 2001 From: Ruben Daniels Date: Fri, 6 Apr 2012 12:35:08 +0200 Subject: [PATCH] * Added Setting --- lib/ace/editor.js | 8 ++++++++ lib/ace/virtual_renderer.js | 33 ++++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/lib/ace/editor.js b/lib/ace/editor.js index ec89b4b7..b2af54ed 100644 --- a/lib/ace/editor.js +++ b/lib/ace/editor.js @@ -597,6 +597,14 @@ var Editor = function(renderer, session) { this.getHighlightSelectedWord = function() { return this.$highlightSelectedWord; }; + + this.setAnimatedScroll = function(shouldAnimate){ + this.renderer.setAnimatedScroll(shouldAnimate); + } + + this.getAnimatedScroll = function(){ + this.rendered.getAnimatedScroll(); + } this.setShowInvisibles = function(showInvisibles) { if (this.getShowInvisibles() == showInvisibles) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index 2cdfc4a5..bd3ea115 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -102,6 +102,8 @@ var VirtualRenderer = function(container, theme) { // Indicates whether the horizontal scrollbar is visible this.$horizScroll = true; this.$horizScrollAlwaysVisible = true; + + this.$animatedScroll = false; this.scrollBar = new ScrollBar(container); this.scrollBar.addEventListener("scroll", function(e) { @@ -273,6 +275,14 @@ var VirtualRenderer = function(container, theme) { var limit = Math.floor(availableWidth / this.characterWidth); return this.session.adjustWrapLimit(limit); }; + + this.setAnimatedScroll = function(shouldAnimate){ + this.$animatedScroll = shouldAnimate; + } + + this.getAnimatedscroll = function(){ + return this.$animatedScroll + } this.setShowInvisibles = function(showInvisibles) { if (this.$textLayer.setShowInvisibles(showInvisibles)) @@ -723,16 +733,21 @@ var VirtualRenderer = function(container, theme) { var offset = pos.top; if (center) offset -= this.$size.scrollerHeight / 2; - - var i = 0, _self = this, - steps = calcSteps(this.scrollTop, offset);// console.dir(steps); - clearInterval(_self.$timer); - this.$timer = setInterval(function(){ - _self.session.setScrollTop(steps[i]); - if (++i == STEPS + 1) - clearInterval(_self.$timer); - }, 10); + if (this.$animatedScroll) { + var i = 0, _self = this, + steps = calcSteps(this.scrollTop, offset); + clearInterval(_self.$timer); + this.$timer = setInterval(function(){ + _self.session.setScrollTop(steps[i]); + + if (++i == STEPS + 1) + clearInterval(_self.$timer); + }, 10); + } + else { + this.session.setScrollTop(offset); + } }; this.scrollToY = function(scrollTop) {