From 3f8d96eb489183e7adc70bf3813e51f55b4d0d07 Mon Sep 17 00:00:00 2001 From: benweet Date: Wed, 19 Mar 2014 23:06:17 +0000 Subject: [PATCH] Fixed weird behavior in scroll link extension --- public/res/extensions/scrollLink.js | 70 +++++++++++------------------ 1 file changed, 26 insertions(+), 44 deletions(-) diff --git a/public/res/extensions/scrollLink.js b/public/res/extensions/scrollLink.js index 457babaa..82bc9a3a 100644 --- a/public/res/extensions/scrollLink.js +++ b/public/res/extensions/scrollLink.js @@ -17,7 +17,7 @@ define([ scrollLink.onSectionsCreated = function(sectionListParam) { sectionList = sectionListParam; }; - + var offsetBegin = 0; scrollLink.onMarkdownTrim = function(offsetBeginParam) { offsetBegin = offsetBeginParam; @@ -70,7 +70,7 @@ define([ } addTextareaSection(sectionText); }); - + // Apply a coef to manage divergence in some browsers var theoricalHeight = _.last(mdSectionList).endOffset; var realHeight = $textareaElt[0].scrollHeight; @@ -183,8 +183,8 @@ define([ lastPreviewScrollTop = previewScrollTop; return; } - $previewElt.stop('scrollLinkFx', true).animate({ - scrollTop: destScrollTop + scrollingHelper.stop('scrollLinkFx', true).css('value', 0).animate({ + value: destScrollTop - previewScrollTop }, { easing: 'easeOutSine', duration: 200, @@ -192,11 +192,12 @@ define([ step: function(now) { isPreviewMoving = true; lastPreviewScrollTop = previewScrollTop + now; + $previewElt.scrollTop(lastPreviewScrollTop); }, done: function() { - setTimeout(function() { + _.defer(function() { isPreviewMoving = false; - }, 100); + }); }, }).dequeue('scrollLinkFx'); } @@ -227,43 +228,24 @@ define([ lastEditorScrollTop = editorScrollTop; return; } - if(window.lightMode) { - $textareaElt.stop('scrollLinkFx', true).animate({ - scrollTop: destScrollTop - }, { - easing: 'easeOutSine', - duration: 200, - queue: 'scrollLinkFx', - step: function(now) { - isEditorMoving = true; - lastEditorScrollTop = editorScrollTop + now; - }, - done: function() { - setTimeout(function() { - isEditorMoving = false; - }, 100); - }, - }).dequeue('scrollLinkFx'); - } - else { - scrollingHelper.stop('scrollLinkFx', true).css('value', 0).animate({ - value: destScrollTop - editorScrollTop - }, { - easing: 'easeOutSine', - duration: 200, - queue: 'scrollLinkFx', - step: function(now) { - isEditorMoving = true; - lastEditorScrollTop = editorScrollTop + now; - aceEditor.session.setScrollTop(lastEditorScrollTop); - }, - done: function() { - _.defer(function() { - isEditorMoving = false; - }); - }, - }).dequeue('scrollLinkFx'); - } + scrollingHelper.stop('scrollLinkFx', true).css('value', 0).animate({ + value: destScrollTop - editorScrollTop + }, { + easing: 'easeOutSine', + duration: 200, + queue: 'scrollLinkFx', + step: function(now) { + isEditorMoving = true; + lastEditorScrollTop = editorScrollTop + now; + window.lightMode || aceEditor.session.setScrollTop(lastEditorScrollTop); + window.lightMode && $textareaElt.scrollTop(lastEditorScrollTop); + }, + done: function() { + _.defer(function() { + isEditorMoving = false; + }); + }, + }).dequeue('scrollLinkFx'); } }, 100); @@ -331,4 +313,4 @@ define([ }; return scrollLink; -}); \ No newline at end of file +});