diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js
index 8209c9bf8e5..70b5443bdd7 100644
--- a/src/static/js/ace2_inner.js
+++ b/src/static/js/ace2_inner.js
@@ -3731,6 +3731,33 @@ function Ace2Inner(){
updateBrowserSelectionFromRep();
}, 200);
}
+
+ /* Attempt to apply some sanity to cursor handling in Chrome after a copy / paste event
+ We have to do this the way we do because rep. doesn't hold the value for keyheld events IE if the user
+ presses and holds the arrow key */
+ if((evt.which == 37 || evt.which == 38 || evt.which == 39 || evt.which == 40) && $.browser.chrome){
+ var isLeftArrow = evt.which === 37;
+ var isUpArrow = evt.which === 38;
+ var isRightArrow = evt.which === 39;
+ var isDownArrow = evt.which === 40;
+
+ var newVisibleLineRange = getVisibleLineRange(); // get the current visible range -- This works great.
+ var lineHeight = textLineHeight(); // what Is the height of each line?
+ var myselection = document.getSelection(); // get the current caret selection, can't use rep. here because that only gives us the start position not the current
+ var caretOffsetTop = myselection.focusNode.parentNode.offsetTop; // get the carets selection offset in px IE 214
+
+ if((isUpArrow || isLeftArrow || isRightArrow || isDownArrow) && caretOffsetTop){ // was it an up arrow or left arrow?
+ var lineNum = Math.round(caretOffsetTop / lineHeight) ; // Get the current Line Number IE 84
+ var caretIsVisible = (lineNum > newVisibleLineRange[0] && lineNum < newVisibleLineRange[1]); // Is the cursor in the visible Range IE ie 84 > 14 and 84 < 90?
+ if(!caretIsVisible){ // is the cursor no longer visible to the user?
+ // Oh boy the caret is out of the visible area, I need to scroll the browser window to lineNum.
+ // Get the new Y by getting the line number and multiplying by the height of each line.
+ var newY = lineHeight * (lineNum -1); // -1 to go to the line above
+ setScrollY(newY); // set the scroll height of the browser
+ }
+ }
+ }
+
}
if (type == "keydown")
@@ -3836,7 +3863,6 @@ function Ace2Inner(){
selection.endPoint = getPointForLineAndChar(se);
selection.focusAtStart = !! rep.selFocusAtStart;
-
setSelection(selection);
}
diff --git a/src/templates/timeslider.html b/src/templates/timeslider.html
index 4a8543c56fa..902c7191865 100644
--- a/src/templates/timeslider.html
+++ b/src/templates/timeslider.html
@@ -40,8 +40,10 @@
<% e.end_block(); %>
+ <% e.begin_block("timesliderScripts"); %>
+ <% e.end_block(); %>
<% e.begin_block("timesliderBody"); %>