Fix left/right arrow key bug
This happens when you have a chunk that has no trailing newlines followed by a chunk with a single newline at the start. Moving between those chunks would cause the caret to jump to the wrong position sometimes.
This commit is contained in:
parent
90e558cf3f
commit
ce59c9d399
|
@ -646,11 +646,17 @@ function chunkOnKeyDown(event) {
|
||||||
switch(event.keyCode) {
|
switch(event.keyCode) {
|
||||||
case 37: // left
|
case 37: // left
|
||||||
case 39: // right
|
case 39: // right
|
||||||
old_selection_offset = getSelection().focusOffset;
|
old_range = getSelection().getRangeAt(0);
|
||||||
|
old_range_start = old_range.startOffset;
|
||||||
|
old_range_end = old_range.endOffset;
|
||||||
|
old_range_ancestor = old_range.commonAncestorContainer;
|
||||||
|
old_range_start_container = old_range.startContainer;
|
||||||
|
old_range_end_container = old_range.endContainer;
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
// Wait a few milliseconds and check if the caret has moved
|
// Wait a few milliseconds and check if the caret has moved
|
||||||
new_selection = getSelection();
|
new_selection = getSelection();
|
||||||
if(old_selection_offset != new_selection.focusOffset) {
|
new_range = new_selection.getRangeAt(0);
|
||||||
|
if(old_range_start != new_range.startOffset || old_range_end != new_range.endOffset || old_range_ancestor != new_range.commonAncestorContainer || old_range_start_container != new_range.startContainer || old_range_end_container != new_range.endContainer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// If it hasn't moved, we're at the beginning or end of a chunk
|
// If it hasn't moved, we're at the beginning or end of a chunk
|
||||||
|
|
Loading…
Reference in New Issue