Sfoglia il codice sorgente

:art: https://github.com/siyuan-note/siyuan/issues/12637

Vanessa 9 mesi fa
parent
commit
56ee07f703
1 ha cambiato i file con 13 aggiunte e 1 eliminazioni
  1. 13 1
      app/src/protyle/wysiwyg/enter.ts

+ 13 - 1
app/src/protyle/wysiwyg/enter.ts

@@ -17,7 +17,7 @@ import {isIPad, setStorageVal} from "../util/compatibility";
 import {mathRender} from "../render/mathRender";
 import {mathRender} from "../render/mathRender";
 import {isMobile} from "../../util/functions";
 import {isMobile} from "../../util/functions";
 import {processRender} from "../util/processCode";
 import {processRender} from "../util/processCode";
-import {hasClosestByClassName} from "../util/hasClosest";
+import {hasClosestByAttribute, hasClosestByClassName} from "../util/hasClosest";
 
 
 export const enter = (blockElement: HTMLElement, range: Range, protyle: IProtyle) => {
 export const enter = (blockElement: HTMLElement, range: Range, protyle: IProtyle) => {
     if (hasClosestByClassName(blockElement, "protyle-wysiwyg__embed")) {
     if (hasClosestByClassName(blockElement, "protyle-wysiwyg__embed")) {
@@ -198,7 +198,19 @@ export const enter = (blockElement: HTMLElement, range: Range, protyle: IProtyle
     range.insertNode(wbrElement);
     range.insertNode(wbrElement);
     const html = blockElement.outerHTML;
     const html = blockElement.outerHTML;
     wbrElement.remove();
     wbrElement.remove();
+
     if (range.toString() !== "") {
     if (range.toString() !== "") {
+        // 选中数学公式后回车取消选中 https://github.com/siyuan-note/siyuan/issues/12637#issuecomment-2381106949
+        const mathElement = hasClosestByAttribute(range.startContainer, "data-type", "inline-math")
+        if (mathElement) {
+            const nextSibling = hasNextSibling(mathElement);
+            if (nextSibling) {
+                range = getSelection().getRangeAt(0)
+                range.setEnd(nextSibling, nextSibling.textContent.startsWith(Constants.ZWSP) ? 1 : 0);
+                range.collapse(false);
+            }
+            return true;
+        }
         range.extractContents();
         range.extractContents();
     }
     }
     if (editableElement.lastChild) {
     if (editableElement.lastChild) {