This commit is contained in:
Vanessa 2023-11-27 10:46:12 +08:00
parent 8f6336d848
commit e0cc6ef05b
3 changed files with 11 additions and 15 deletions

View file

@ -657,12 +657,6 @@ const fileTreeKeydown = (app: App, event: KeyboardEvent) => {
hasClosestByClassName(target, "protyle", true)) {
return false;
}
if (!window.siyuan.menus.menu.element.classList.contains("fn__none") &&
(event.code.startsWith("Arrow") || event.code === "Enter") &&
!event.altKey && !event.shiftKey && isNotCtrl(event)) {
event.preventDefault();
return true;
}
if (event.shiftKey) {
if (event.key === "ArrowUp") {
const startEndElement = getStartEndElement(liElements);

View file

@ -2,6 +2,7 @@ import {getEventName, updateHotkeyTip} from "../protyle/util/compatibility";
import {setPosition} from "../util/setPosition";
import {hasClosestByClassName} from "../protyle/util/hasClosest";
import {isMobile} from "../util/functions";
import {Constants} from "../constants";
export class Menu {
public element: HTMLElement;
@ -255,18 +256,19 @@ export const bindMenuKeydown = (event: KeyboardEvent) => {
if (window.siyuan.menus.menu.element.contains(target) && (target.tagName === "INPUT" || target.tagName === "TEXTAREA")) {
return false;
}
if (event.code === "ArrowDown" || event.code === "ArrowUp") {
const eventCode = Constants.KEYCODELIST[event.keyCode]
if (eventCode === "↓" || eventCode === "↑") {
const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__item--current");
let actionMenuElement;
if (!currentElement) {
if (event.code === "ArrowUp") {
if (eventCode === "↑") {
actionMenuElement = getActionMenu(window.siyuan.menus.menu.element.lastElementChild.lastElementChild, false);
} else {
actionMenuElement = getActionMenu(window.siyuan.menus.menu.element.lastElementChild.firstElementChild, true);
}
} else {
currentElement.classList.remove("b3-menu__item--current", "b3-menu__item--show");
if (event.code === "ArrowUp") {
if (eventCode === "↑") {
actionMenuElement = getActionMenu(currentElement.previousElementSibling, false);
if (!actionMenuElement) {
actionMenuElement = getActionMenu(currentElement.parentElement.lastElementChild, false);
@ -288,7 +290,7 @@ export const bindMenuKeydown = (event: KeyboardEvent) => {
}
}
return true;
} else if (event.code === "ArrowRight") {
} else if (eventCode === "→") {
const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__item--current");
if (!currentElement) {
return true;
@ -306,7 +308,7 @@ export const bindMenuKeydown = (event: KeyboardEvent) => {
}
window.siyuan.menus.menu.showSubMenu(subMenuElement);
return true;
} else if (event.code === "ArrowLeft") {
} else if (eventCode === "←") {
const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__submenu .b3-menu__item--current");
if (!currentElement) {
return true;
@ -318,7 +320,7 @@ export const bindMenuKeydown = (event: KeyboardEvent) => {
currentElement.classList.remove("b3-menu__item--current");
}
return true;
} else if (event.code === "Enter") {
} else if (eventCode === "↩") {
const currentElement = window.siyuan.menus.menu.element.querySelector(".b3-menu__item--current");
if (!currentElement) {
return false;

View file

@ -147,9 +147,9 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
}
// https://github.com/siyuan-note/siyuan/issues/2261
if (isNotCtrl(event) && !event.shiftKey && !event.altKey) {
if (Constants.KEYCODELIST[event.keyCode] === "Slash") {
if (Constants.KEYCODELIST[event.keyCode] === "/") {
protyle.hint.enableSlash = true;
} else if (Constants.KEYCODELIST[event.keyCode] === "Backslash" ) {
} else if (Constants.KEYCODELIST[event.keyCode] === "\\") {
protyle.hint.enableSlash = false;
hideElements(["hint"], protyle);
// 此处不能返回,否则无法撤销 https://github.com/siyuan-note/siyuan/issues/2795
@ -169,7 +169,7 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => {
}
if (!window.siyuan.menus.menu.element.classList.contains("fn__none") &&
(event.code.startsWith("Arrow") || event.code === "Enter") &&
(["←", "↑", "→", "↓"].includes(Constants.KEYCODELIST[event.keyCode]) || Constants.KEYCODELIST[event.keyCode] === "↩") &&
!event.altKey && !event.shiftKey && isNotCtrl(event)) {
event.preventDefault();
return;