From 4af11a358361204e42932a779aeba41b82e73a03 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Mon, 25 Sep 2023 10:43:06 +0800 Subject: [PATCH] :art: fix https://github.com/siyuan-note/siyuan/issues/9259 --- app/src/mobile/index.ts | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/app/src/mobile/index.ts b/app/src/mobile/index.ts index 07f7e0924..04c3b0933 100644 --- a/app/src/mobile/index.ts +++ b/app/src/mobile/index.ts @@ -2,7 +2,7 @@ import {addScript, addScriptSync} from "../protyle/util/addScript"; import {Constants} from "../constants"; import {onMessage} from "./util/onMessage"; import {genUUID} from "../util/genID"; -import {hasClosestByAttribute, hasTopClosestByClassName} from "../protyle/util/hasClosest"; +import {hasClosestBlock, hasClosestByAttribute, hasTopClosestByClassName} from "../protyle/util/hasClosest"; import {Model} from "../layout/Model"; import "../assets/scss/mobile.scss"; import {Menus} from "../menus"; @@ -16,13 +16,15 @@ import {initMessage, showMessage} from "../dialog/message"; import {goBack} from "./util/MobileBackFoward"; import {hideKeyboardToolbar, showKeyboardToolbar} from "./util/keyboardToolbar"; import {getLocalStorage, writeText} from "../protyle/util/compatibility"; -import {openMobileFileById} from "./editor"; +import {getCurrentEditor, openMobileFileById} from "./editor"; import {getSearch} from "../util/functions"; import {initRightMenu} from "./menu"; import {openChangelog} from "../boot/openChangelog"; import {registerServiceWorker} from "../util/serviceWorker"; import {afterLoadPlugin, loadPlugins} from "../plugin/loader"; import {saveScroll} from "../protyle/scroll/saveScroll"; +import {removeBlock} from "../protyle/wysiwyg/remove"; +import {isNotEditBlock} from "../protyle/wysiwyg/getBlock"; class App { public plugins: import("../plugin").Plugin[] = []; @@ -68,7 +70,7 @@ class App { } }); window.addEventListener("beforeunload", () => { - saveScroll(window.siyuan.mobile.editor.protyle); + saveScroll(window.siyuan.mobile.editor.protyle); }, false); window.addEventListener("pagehide", () => { saveScroll(window.siyuan.mobile.editor.protyle); @@ -108,6 +110,25 @@ class App { document.addEventListener("touchend", (event) => { handleTouchEnd(event, siyuanApp); }, false); + // https://github.com/siyuan-note/siyuan/issues/9259 + window.addEventListener("keydown", (event) => { + if (getSelection().rangeCount > 0) { + const range = getSelection().getRangeAt(0); + const editor = getCurrentEditor(); + if (range.toString() === "" && + editor && editor.protyle.wysiwyg.element.contains(range.startContainer) && + !event.altKey && (event.key === "Backspace" || event.key === "Delete")) { + const nodeElement = hasClosestBlock(range.startContainer); + if (nodeElement && isNotEditBlock(nodeElement)) { + nodeElement.classList.add("protyle-wysiwyg--select"); + removeBlock(editor.protyle, nodeElement, range); + event.stopPropagation(); + event.preventDefault(); + return; + } + } + } + }) }); } }