Change history scolling so it doesn't interfere with moving between lines, even when those lines are wrapped rather than hard line breaks.

pull/21833/head
David Baker 2016-01-15 18:31:07 +00:00
parent 6bd09512de
commit 52de322789
1 changed files with 12 additions and 17 deletions

View File

@ -209,23 +209,18 @@ module.exports = React.createClass({
this.sentHistory.push(input); this.sentHistory.push(input);
this.onEnter(ev); this.onEnter(ev);
} }
else if (ev.keyCode === KeyCode.UP) { else if (ev.keyCode === KeyCode.UP || ev.keyCode === KeyCode.DOWN) {
var input = this.refs.textarea.value; var oldSelectionStart = this.refs.textarea.selectionStart;
var offset = this.refs.textarea.selectionStart || 0; // Remember the keyboard because React will recycle the synthetic event
if (ev.ctrlKey || !input.substr(0, offset).match(/\n/)) { var keyCode = ev.keyCode;
this.sentHistory.next(1); // set a callback so we can see if the cursor position changes as
ev.preventDefault(); // a result of this event. If it doesn't, we cycle history.
this.resizeInput(); setTimeout(() => {
} if (this.refs.textarea.selectionStart == oldSelectionStart) {
} this.sentHistory.next(keyCode === KeyCode.UP ? 1 : -1);
else if (ev.keyCode === KeyCode.DOWN) { this.resizeInput();
var input = this.refs.textarea.value; }
var offset = this.refs.textarea.selectionStart || 0; }, 0);
if (ev.ctrlKey || !input.substr(offset).match(/\n/)) {
this.sentHistory.next(-1);
ev.preventDefault();
this.resizeInput();
}
} }
if (this.props.tabComplete) { if (this.props.tabComplete) {