From 1def90083464a396f56650373d6e2a690c25ac11 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 12 May 2012 11:22:01 +0400 Subject: [PATCH] animated scrolling could leave cursor off screen --- lib/ace/virtual_renderer.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/ace/virtual_renderer.js b/lib/ace/virtual_renderer.js index d774383e..d264c7cf 100644 --- a/lib/ace/virtual_renderer.js +++ b/lib/ace/virtual_renderer.js @@ -1068,7 +1068,7 @@ var VirtualRenderer = function(container, theme) { var _self = this; var steps = _self.$calcSteps(fromValue, toValue); this.$inScrollAnimation = true; - + clearInterval(this.$timer); _self.session.setScrollTop(steps.shift()); @@ -1077,18 +1077,20 @@ var VirtualRenderer = function(container, theme) { _self.session.setScrollTop(steps.shift()); // trick session to think it's already scrolled to not loose toValue _self.session.$scrollTop = toValue; - } else { - _self.$inScrollAnimation = false; - clearInterval(_self.$timer); - + } else if (toValue != null) { _self.session.$scrollTop = -1; _self.session.setScrollTop(toValue); + toValue = null; + } else { + // do this on separate step to not get spurious scroll event from scrollbar + _self.$timer = clearInterval(_self.$timer); + _self.$inScrollAnimation = false; callback && callback(); } }, 10); } }; - + /** * VirtualRenderer.scrollToY(scrollTop) -> Number * - scrollTop (Number): The position to scroll to