From 7bff33c986a57d2967c4fb3d393cd02e3c797c7d Mon Sep 17 00:00:00 2001 From: nightwing Date: Wed, 25 Apr 2012 11:26:15 +0400 Subject: [PATCH] fix scrolling animation --- lib/ace/virtual_renderer.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index f003c444..06e1c979 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -751,22 +751,22 @@ var VirtualRenderer = function(container, theme) { return steps; }; - this.scrollToLine = function(line, center, animate) { + this.scrollToLine = function(line, center, animate, callback) { var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0}); var offset = pos.top; if (center) offset -= this.$size.scrollerHeight / 2; - if (animate) { + if (animate !== false) { this.animateScrolling(function() { this.session.setScrollTop(offset); - }, this); + }, this, callback); } else { this.session.setScrollTop(offset); } }; - this.animateScrolling = function(scrollFunc, self) { + this.animateScrolling = function(scrollFunc, self, callback) { var fromValue = this.scrollTop; scrollFunc.call(self); var toValue = this.scrollTop; @@ -778,7 +778,7 @@ var VirtualRenderer = function(container, theme) { clearInterval(this.$timer); _self.session.setScrollTop(steps.shift()); - this.$timer = setInterval(function() { + this.$timer = setInterval(function() { if (steps.length) { _self.session.setScrollTop(steps.shift()); // trick session to think it's already scrolled to not loose toValue @@ -789,6 +789,7 @@ var VirtualRenderer = function(container, theme) { _self.session.$scrollTop = -1; _self.session.setScrollTop(toValue); + callback && callback(); } }, 10); }