From d47d5ade8e6435201e05ad945477353eaff9c239 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Fri, 24 Nov 2023 20:17:08 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/9727 --- app/src/assets/scss/protyle/_wysiwyg.scss | 4 ---- app/src/boot/globalEvent/keydown.ts | 12 ++---------- app/src/menus/protyle.ts | 6 +----- app/src/protyle/gutter/index.ts | 12 ++---------- app/src/protyle/toolbar/index.ts | 6 +----- 5 files changed, 6 insertions(+), 34 deletions(-) diff --git a/app/src/assets/scss/protyle/_wysiwyg.scss b/app/src/assets/scss/protyle/_wysiwyg.scss index d66b3b46b..7118dd460 100644 --- a/app/src/assets/scss/protyle/_wysiwyg.scss +++ b/app/src/assets/scss/protyle/_wysiwyg.scss @@ -472,10 +472,6 @@ animation: scale 0.3s ease-in-out; } - [data-type="backslash"] span { - display: none; - } - div[data-type="NodeMathBlock"] { margin-top: 0; margin-bottom: 0; diff --git a/app/src/boot/globalEvent/keydown.ts b/app/src/boot/globalEvent/keydown.ts index 1c374064d..bdbb0715b 100644 --- a/app/src/boot/globalEvent/keydown.ts +++ b/app/src/boot/globalEvent/keydown.ts @@ -339,20 +339,12 @@ const editKeydown = (app: App, event: KeyboardEvent) => { selectsElement.forEach(item => { // 不能使用 [contenteditable="true"], 否则嵌入块无法复制 item.querySelectorAll("[spellcheck]").forEach(editItem => { - const cloneNode = editItem.cloneNode(true) as HTMLElement; - cloneNode.querySelectorAll('[data-type="backslash"]').forEach(slashItem => { - slashItem.firstElementChild.remove(); - }); - html += cloneNode.textContent + "\n"; + html += editItem.textContent + "\n"; }); }); copyPlainText(html.trimEnd()); } else { - const cloneContents = range.cloneContents(); - cloneContents.querySelectorAll('[data-type="backslash"]').forEach(item => { - item.firstElementChild.remove(); - }); - writeText(cloneContents.textContent); + writeText(range.toString()); } event.preventDefault(); return true; diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index c34aa124e..27e6faafd 100644 --- a/app/src/menus/protyle.ts +++ b/app/src/menus/protyle.ts @@ -623,11 +623,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { accelerator: window.siyuan.config.keymap.editor.general.copyPlainText.custom, click() { focusByRange(getEditorRange(nodeElement)); - const cloneContents = getSelection().getRangeAt(0).cloneContents(); - cloneContents.querySelectorAll('[data-type="backslash"]').forEach(item => { - item.firstElementChild.remove(); - }); - copyPlainText(cloneContents.textContent); + copyPlainText(getSelection().getRangeAt(0).toString()); } }).element); if (protyle.disabled) { diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index 3914ef383..31c08f30f 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -627,11 +627,7 @@ export class Gutter { let html = ""; selectsElement.forEach(item => { item.querySelectorAll("[spellcheck]").forEach(editItem => { - const cloneNode = editItem.cloneNode(true) as HTMLElement; - cloneNode.querySelectorAll('[data-type="backslash"]').forEach(slashItem => { - slashItem.firstElementChild.remove(); - }); - html += cloneNode.textContent + "\n"; + html += editItem.textContent + "\n"; }); }); copyPlainText(html.trimEnd()); @@ -1068,11 +1064,7 @@ export class Gutter { click() { let text = ""; nodeElement.querySelectorAll("[spellcheck]").forEach(item => { - const cloneNode = item.cloneNode(true) as HTMLElement; - cloneNode.querySelectorAll('[data-type="backslash"]').forEach(slashItem => { - slashItem.firstElementChild.remove(); - }); - text += cloneNode.textContent + "\n"; + text += item.textContent + "\n"; }); copyPlainText(text.trimEnd()); } diff --git a/app/src/protyle/toolbar/index.ts b/app/src/protyle/toolbar/index.ts index 9cf484832..516a154be 100644 --- a/app/src/protyle/toolbar/index.ts +++ b/app/src/protyle/toolbar/index.ts @@ -1585,11 +1585,7 @@ export class Toolbar { this.subElement.classList.add("fn__none"); } else if (action === "copyPlainText") { focusByRange(getEditorRange(nodeElement)); - const cloneContents = getSelection().getRangeAt(0).cloneContents(); - cloneContents.querySelectorAll('[data-type="backslash"]').forEach(item => { - item.firstElementChild.remove(); - }); - copyPlainText(cloneContents.textContent); + copyPlainText(getSelection().getRangeAt(0).toString()); this.subElement.classList.add("fn__none"); } else if (action === "pasteAsPlainText") { focusByRange(getEditorRange(nodeElement));