This commit is contained in:
parent
c2c7f87475
commit
ab147598e1
2 changed files with 32 additions and 21 deletions
|
@ -1404,17 +1404,17 @@ export const windowKeyDown = (app: App, event: KeyboardEvent) => {
|
|||
return;
|
||||
}
|
||||
|
||||
// 闪卡长按 Esc 光标定位到闪卡按钮上 https://github.com/siyuan-note/siyuan/issues/12989
|
||||
if (document.activeElement && hasClosestByClassName(document.activeElement, "card__action")) {
|
||||
return;
|
||||
}
|
||||
// 光标在文档树等面板中,按 Esc 回到编辑器中 https://github.com/siyuan-note/siyuan/issues/4289
|
||||
let range;
|
||||
if (getSelection().rangeCount > 0) {
|
||||
range = getSelection().getRangeAt(0);
|
||||
const protypleElement = hasClosestByClassName(range.startContainer, "protyle-content", true);
|
||||
if (protypleElement) {
|
||||
const range = getSelection().getRangeAt(0);
|
||||
if (hasClosestByClassName(range.startContainer, "protyle-content", true)) {
|
||||
focusByRange(range);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
range = document.createRange();
|
||||
}
|
||||
const lastBackStack = window.siyuan.backStack[window.siyuan.backStack.length - 1];
|
||||
if (lastBackStack && lastBackStack.protyle.toolbar.range) {
|
||||
|
|
|
@ -14,6 +14,7 @@ import {
|
|||
import {
|
||||
hasClosestBlock,
|
||||
hasClosestByAttribute,
|
||||
hasClosestByClassName,
|
||||
hasClosestByMatchTag,
|
||||
hasTopClosestByAttribute,
|
||||
isInEmbedBlock
|
||||
|
@ -1175,23 +1176,33 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
|
|||
|
||||
// esc
|
||||
if (event.key === "Escape") {
|
||||
if (!protyle.toolbar.element.classList.contains("fn__none") ||
|
||||
!protyle.hint.element.classList.contains("fn__none") ||
|
||||
!protyle.toolbar.subElement.classList.contains("fn__none")) {
|
||||
hideElements(["toolbar", "hint", "util"], protyle);
|
||||
protyle.hint.enableExtend = false;
|
||||
} else if (nodeElement.classList.contains("protyle-wysiwyg--select")) {
|
||||
hideElements(["select"], protyle);
|
||||
countBlockWord([], protyle.block.rootID);
|
||||
} else if (!window.siyuan.menus.menu.element.classList.contains("fn__none")) {
|
||||
// 防止 ESC 时选中当前块
|
||||
window.siyuan.menus.menu.remove();
|
||||
if (event.repeat) {
|
||||
// https://github.com/siyuan-note/siyuan/issues/12989
|
||||
const cardElement = hasClosestByClassName(range.startContainer, "card__main", true);
|
||||
if (cardElement && document.activeElement && document.activeElement.classList.contains("protyle-wysiwyg")) {
|
||||
(cardElement.querySelector(".card__action button") as HTMLElement).focus()
|
||||
hideElements(["select"], protyle);
|
||||
}
|
||||
} else {
|
||||
hideElements(["select"], protyle);
|
||||
range.collapse(false);
|
||||
nodeElement.classList.add("protyle-wysiwyg--select");
|
||||
countBlockWord([nodeElement.getAttribute("data-node-id")], protyle.block.rootID);
|
||||
if (!protyle.toolbar.element.classList.contains("fn__none") ||
|
||||
!protyle.hint.element.classList.contains("fn__none") ||
|
||||
!protyle.toolbar.subElement.classList.contains("fn__none")) {
|
||||
hideElements(["toolbar", "hint", "util"], protyle);
|
||||
protyle.hint.enableExtend = false;
|
||||
} else if (nodeElement.classList.contains("protyle-wysiwyg--select")) {
|
||||
hideElements(["select"], protyle);
|
||||
countBlockWord([], protyle.block.rootID);
|
||||
} else if (!window.siyuan.menus.menu.element.classList.contains("fn__none")) {
|
||||
// 防止 ESC 时选中当前块
|
||||
window.siyuan.menus.menu.remove();
|
||||
} else {
|
||||
hideElements(["select"], protyle);
|
||||
range.collapse(false);
|
||||
nodeElement.classList.add("protyle-wysiwyg--select");
|
||||
countBlockWord([nodeElement.getAttribute("data-node-id")], protyle.block.rootID);
|
||||
}
|
||||
}
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue