This commit is contained in:
parent
455bb1c050
commit
b6cf45b003
3 changed files with 33 additions and 14 deletions
|
@ -36,6 +36,7 @@ import * as dayjs from "dayjs";
|
|||
import {blockRender} from "../protyle/markdown/blockRender";
|
||||
import {renameAsset} from "../editor/rename";
|
||||
import {hasNextSibling} from "../protyle/wysiwyg/getBlock";
|
||||
import {electronUndo} from "../protyle/undo";
|
||||
|
||||
export const refMenu = (protyle: IProtyle, element: HTMLElement) => {
|
||||
const nodeElement = hasClosestBlock(element);
|
||||
|
@ -74,7 +75,9 @@ export const refMenu = (protyle: IProtyle, element: HTMLElement) => {
|
|||
inputElement.addEventListener("keydown", (event) => {
|
||||
if (event.key === "Enter" && !event.isComposing) {
|
||||
window.siyuan.menus.menu.remove();
|
||||
return;
|
||||
}
|
||||
electronUndo(event)
|
||||
});
|
||||
}
|
||||
}).element);
|
||||
|
@ -642,11 +645,14 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText
|
|||
focusByRange(protyle.toolbar.range);
|
||||
}
|
||||
window.siyuan.menus.menu.remove();
|
||||
return;
|
||||
} else if (event.key === "Tab" && !event.isComposing) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
element.nextElementSibling.querySelector("input").focus();
|
||||
return;
|
||||
}
|
||||
electronUndo(event)
|
||||
});
|
||||
}
|
||||
}).element);
|
||||
|
@ -682,6 +688,7 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText
|
|||
focusByRange(protyle.toolbar.range);
|
||||
}
|
||||
window.siyuan.menus.menu.remove();
|
||||
return;
|
||||
} else if (event.key === "Tab" && !event.isComposing) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
@ -690,7 +697,9 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText
|
|||
} else {
|
||||
element.nextElementSibling.querySelector("input").focus();
|
||||
}
|
||||
return;
|
||||
}
|
||||
electronUndo(event)
|
||||
});
|
||||
}
|
||||
}).element);
|
||||
|
@ -720,11 +729,14 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText
|
|||
focusByRange(protyle.toolbar.range);
|
||||
}
|
||||
window.siyuan.menus.menu.remove();
|
||||
return;
|
||||
} else if (event.key === "Tab" && event.shiftKey && !event.isComposing) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
element.previousElementSibling.querySelector("input").focus();
|
||||
return;
|
||||
}
|
||||
electronUndo(event)
|
||||
});
|
||||
}
|
||||
}).element);
|
||||
|
|
|
@ -39,6 +39,7 @@ import {escapeHtml} from "../../util/escape";
|
|||
import {hideElements} from "../ui/hideElements";
|
||||
import {linkMenu} from "../../menus/protyle";
|
||||
import {renderAssetsPreview} from "../../asset/renderAssets";
|
||||
import {electronUndo} from "../undo";
|
||||
|
||||
export class Toolbar {
|
||||
public element: HTMLElement;
|
||||
|
@ -866,18 +867,7 @@ export class Toolbar {
|
|||
if (event.isComposing) {
|
||||
return;
|
||||
}
|
||||
/// #if !BROWSER
|
||||
if (matchHotKey(window.siyuan.config.keymap.editor.general.undo.custom, event)) {
|
||||
getCurrentWindow().webContents.undo();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
if (matchHotKey(window.siyuan.config.keymap.editor.general.redo.custom, event)) {
|
||||
getCurrentWindow().webContents.redo();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
/// #endif
|
||||
electronUndo(event);
|
||||
if (event.key === "Escape" || matchHotKey("⌘↩", event)) {
|
||||
this.subElement.classList.add("fn__none");
|
||||
this.subElement.querySelector('[data-type="pin"]').classList.remove("block__icon--active");
|
||||
|
|
|
@ -3,13 +3,17 @@ import {preventScroll} from "../scroll/preventScroll";
|
|||
import {Constants} from "../../constants";
|
||||
import {hideElements} from "../ui/hideElements";
|
||||
import {scrollCenter} from "../../util/highlightById";
|
||||
/// #if !BROWSER
|
||||
import {getCurrentWindow} from "@electron/remote";
|
||||
/// #endif
|
||||
import {matchHotKey} from "../util/hotKey";
|
||||
|
||||
interface IOperations {
|
||||
doOperations: IOperation[],
|
||||
undoOperations: IOperation[]
|
||||
}
|
||||
|
||||
class Undo {
|
||||
export class Undo {
|
||||
private hasUndo = false;
|
||||
private redoStack: IOperations[];
|
||||
private undoStack: IOperations[];
|
||||
|
@ -86,4 +90,17 @@ class Undo {
|
|||
}
|
||||
}
|
||||
|
||||
export {Undo};
|
||||
export const electronUndo = (event: KeyboardEvent) => {
|
||||
/// #if !BROWSER
|
||||
if (matchHotKey(window.siyuan.config.keymap.editor.general.undo.custom, event)) {
|
||||
getCurrentWindow().webContents.undo();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
if (matchHotKey(window.siyuan.config.keymap.editor.general.redo.custom, event)) {
|
||||
getCurrentWindow().webContents.redo();
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
/// #endif
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue