🎨 上下键

This commit is contained in:
Vanessa 2024-09-28 00:12:02 +08:00 committed by Daniel
parent 4dffc849c9
commit 0292c2cf8f
No known key found for this signature in database
GPG Key ID: 86211BA83DF03017

View File

@ -648,7 +648,7 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
) ||
(!firstEditElement && nodeElement.isSameNode(protyle.wysiwyg.element.firstElementChild))) {
// 不能用\n判断否则文字过长折行将错误 https://github.com/siyuan-note/siyuan/issues/6156
if (getSelectionPosition(nodeElement, range).top - parseInt(getComputedStyle(nodeElement).paddingTop) - protyle.wysiwyg.element.getBoundingClientRect().top < 40 || nodeElement.classList.contains("av")) {
if (getSelectionPosition(nodeEditableElement, range).top - nodeEditableElement.getBoundingClientRect().top < 20 || nodeElement.classList.contains("av")) {
if (protyle.title && protyle.title.editElement &&
(protyle.wysiwyg.element.firstElementChild.getAttribute("data-eof") === "1" ||
protyle.contentElement.scrollTop === 0)) {
@ -663,7 +663,8 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
}
}
} else {
if (nodeEditableElement?.innerText.substr(0, position.end).indexOf("\n") === -1 || (!isMac() && position.start === 0)) {
if (((nodeEditableElement?.innerText.substr(0, position.end).indexOf("\n") === -1 || position.start === 0) &&
getSelectionPosition(nodeEditableElement, range).top - nodeEditableElement.getBoundingClientRect().top < 20)) {
let previousElement: HTMLElement = getPreviousBlock(nodeElement) as HTMLElement;
if (previousElement) {
previousElement = getLastBlock(previousElement) as HTMLElement;
@ -732,17 +733,17 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
}
event.stopPropagation();
event.preventDefault();
} else if (nodeEditableElement?.innerText.substr(position.end).indexOf("\n") === -1) {
} else if (nodeEditableElement?.innerText.substr(position.end).indexOf("\n") === -1 || position.end >= nodeEditableElement.innerText.trimEnd().length) {
// 需使用 innerText否则 td 中的 br 无法转换为 \n; position.end 不能加1否则倒数第二行行末无法下移
// 下一个块是折叠块
range.collapse(false)
const nextFoldElement = getNextBlock(nodeElement) as HTMLElement;
if (nextFoldElement) {
if(nodeEditableElement.getBoundingClientRect().bottom - getSelectionPosition(nodeElement, range).top < 40) {
focusBlock(nextFoldElement);
scrollCenter(protyle, nextFoldElement);
event.stopPropagation();
event.preventDefault();
} else {
range.collapse(false);
}
}
}
}