From a536b311e4104c363aef8686949dce66a54036ee Mon Sep 17 00:00:00 2001 From: John McLear Date: Mon, 28 Dec 2020 09:28:55 +0000 Subject: [PATCH] much better ux --- src/static/js/ace2_inner.js | 13 +++++++++++-- src/static/js/scroll.js | 12 ++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 9ac5d5a0b..ddde978dd 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -3059,6 +3059,7 @@ function Ace2Inner() { const linesLength = rep.lines.length(); if (isPageUp) { + top.console.log('page up'); // go to the top of the visible content rep.selStart[0] -= visibleLineRange[1] - visibleLineRange[0]; rep.selEnd[0] -= visibleLineRange[1] - visibleLineRange[0]; @@ -3070,11 +3071,19 @@ function Ace2Inner() { } if (isPageDown) { + top.console.log('pag edown'); // go to the bottom of the last visible content - rep.selStart[0] += visibleLineRange[1] - 1; - rep.selEnd[0] += visibleLineRange[1] - 1; + if(rep.selStart[0] === 0){ + rep.selStart[0] += visibleLineRange[1] - visibleLineRange[0] - 1; + rep.selEnd[0] += visibleLineRange[1] - visibleLineRange[0] - 1; + }else{ + // handle if we're on first line as it will do weird things. + rep.selStart[0] += visibleLineRange[1] - visibleLineRange[0]; + rep.selEnd[0] += visibleLineRange[1] - visibleLineRange[0]; + } // if the new rep is beyond the viewport, put the caret on the last line if (rep.selStart[0] > linesLength) { + top.console.log('beyond scope'); rep.selStart = [linesLength - 1, 0]; rep.selEnd = [linesLength - 1, 0]; } diff --git a/src/static/js/scroll.js b/src/static/js/scroll.js index 35bea04d7..7639de728 100644 --- a/src/static/js/scroll.js +++ b/src/static/js/scroll.js @@ -291,11 +291,18 @@ Scroll.prototype.scrollNodeVerticallyIntoView = function (rep, innerHeight, isPa } if (isPageDown) { + console.log(linePosition); + console.log(viewport); // redraw entire page into view putting rep.selStart[0] at top left - this._scrollYPage(linePosition.top); + // this._scrollYPage(linePosition.top); + // redraw entire page into view putting rep.selStart[0] at top left + // const distanceOfTopOfViewport = linePosition.top - viewport.top; + // const pixelsToScroll = + // distanceOfTopOfViewport - this._getPixelsRelativeToPercentageOfViewport(innerHeight, true); + this._scrollYPage(viewport.bottom - viewport.top); return; } - +/* if (linePosition) { const distanceOfTopOfViewport = linePosition.top - viewport.top; const distanceOfBottomOfViewport = viewport.bottom - linePosition.bottom; @@ -314,6 +321,7 @@ Scroll.prototype.scrollNodeVerticallyIntoView = function (rep, innerHeight, isPa this.scrollWhenCaretIsInTheLastLineOfViewportWhenNecessary(rep, true, innerHeight); } } + */ }; Scroll.prototype._partOfRepLineIsOutOfViewport = function (viewportPosition, rep) {