set user's cursor to either the beginning or end of the document

pull/1/head
ansuz 8 years ago
parent 2add39ee40
commit 4a173e30dc

@ -11,7 +11,7 @@ define([
var verbose = function (x) { if (window.verboseMode) { console.log(x); } }; var verbose = function (x) { if (window.verboseMode) { console.log(x); } };
/* accepts the document used by the editor */ /* accepts the document used by the editor */
return function (inner) { var Cursor = function (inner) {
var cursor = {}; var cursor = {};
// there ought to only be one cursor at a time, so let's just // there ought to only be one cursor at a time, so let's just
@ -387,6 +387,58 @@ define([
} }
}; };
cursor.lastTextNode = function () {
var lastEl = Tree.rightmostNode(inner);
if (lastEl && lastEl.nodeType === 3) { return lastEl; }
var firstEl = Tree.leftmostNode(inner);
while (lastEl !== firstEl) {
lastEl = Tree.previousNode(lastEl, inner);
if (lastEl && lastEl.nodeType === 3) { return lastEl; }
}
return lastEl;
};
cursor.firstTextNode = function () {
var firstEl = Tree.leftmostNode(inner);
if (firstEl && firstEl.nodeType === 3) { return firstEl; }
var lastEl = Tree.rightmostNode(inner);
while (firstEl !== lastEl) {
firstEl = Tree.nextNode(firstEl, inner);
if (firstEl && firstEl.nodeType === 3) { return firstEl; }
}
return firstEl;
};
cursor.setToStart = function () {
var el = cursor.firstTextNode();
if (!el) { return; }
fixStart(el, 0);
fixEnd(el, 0);
fixSelection(makeSelection(), makeRange());
return el;
};
cursor.setToEnd = function () {
var el = cursor.lastTextNode();
if (!el) { return; }
var offset = el.textContent.length;
fixStart(el, offset);
fixEnd(el, offset);
fixSelection(makeSelection(), makeRange());
return el;
};
return cursor; return cursor;
}; };
Cursor.Tree = Tree;
return Cursor;
}); });

@ -64,6 +64,7 @@ define([
logFights: true, logFights: true,
fights: [], fights: [],
Cryptpad: Cryptpad, Cryptpad: Cryptpad,
Cursor: Cursor,
}; };
var emitResize = module.emitResize = function () { var emitResize = module.emitResize = function () {
@ -131,7 +132,7 @@ define([
color: '#fff', color: '#fff',
}); });
var cursor = window.cursor = Cursor(inner); var cursor = module.cursor = Cursor(inner);
var setEditable = module.setEditable = function (bool) { var setEditable = module.setEditable = function (bool) {
if (bool) { if (bool) {
@ -718,6 +719,13 @@ define([
realtimeOptions.onLocal(); realtimeOptions.onLocal();
module.$userNameButton.click(); module.$userNameButton.click();
} }
editor.focus();
if (newPad) {
cursor.setToEnd();
} else {
cursor.setToFix();
}
}); });
}; };

Loading…
Cancel
Save