瀏覽代碼

:art: 尝试修改 https://github.com/siyuan-note/siyuan/issues/7299

Vanessa 2 年之前
父節點
當前提交
31a573d90d
共有 1 個文件被更改,包括 26 次插入25 次删除
  1. 26 25
      app/src/protyle/wysiwyg/index.ts

+ 26 - 25
app/src/protyle/wysiwyg/index.ts

@@ -1472,12 +1472,13 @@ export class WYSIWYG {
         let shiftStartElement: HTMLElement;
         this.element.addEventListener("click", (event: MouseEvent & { target: HTMLElement }) => {
             hideElements(["hint", "util"], protyle);
+            const ctrlIsPressed = event.metaKey || event.ctrlKey
             /// #if !MOBILE
             const backlinkBreadcrumbItemElement = hasClosestByClassName(event.target, "protyle-breadcrumb__item");
             if (backlinkBreadcrumbItemElement) {
                 const breadcrumbId = backlinkBreadcrumbItemElement.getAttribute("data-id");
                 if (breadcrumbId) {
-                    if (window.siyuan.ctrlIsPressed) {
+                    if (ctrlIsPressed) {
                         openFileById({
                             id: breadcrumbId,
                             action: breadcrumbId === protyle.block.rootID ? [Constants.CB_GET_FOCUS] : [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL]
@@ -1493,7 +1494,7 @@ export class WYSIWYG {
                 return;
             }
             /// #endif
-            if (!window.siyuan.shiftIsPressed) {
+            if (!event.shiftKey) {
                 shiftStartElement = undefined;
             }
             this.setEmptyOutline(protyle, event.target);
@@ -1518,7 +1519,7 @@ export class WYSIWYG {
                 event.stopPropagation();
                 event.preventDefault();
                 hideElements(["dialog", "toolbar"], protyle);
-                if (range.toString() !== "" && !window.siyuan.shiftIsPressed) {
+                if (range.toString() !== "" && !event.shiftKey) {
                     // 选择不打开引用
                     return;
                 }
@@ -1537,21 +1538,21 @@ export class WYSIWYG {
                         window.open(aElement.getAttribute("data-href"));
                         return;
                     }
-                    if (window.siyuan.shiftIsPressed) {
+                    if (event.shiftKey) {
                         openFileById({
                             id: refBlockId,
                             position: "bottom",
                             action: foldResponse.data ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL] : [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT],
                             zoomIn: foldResponse.data
                         });
-                    } else if (window.siyuan.altIsPressed) {
+                    } else if (event.altKey) {
                         openFileById({
                             id: refBlockId,
                             position: "right",
                             action: foldResponse.data ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL] : [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT],
                             zoomIn: foldResponse.data
                         });
-                    } else if (window.siyuan.ctrlIsPressed) {
+                    } else if (ctrlIsPressed) {
                         openFileById({
                             id: refBlockId,
                             action: foldResponse.data ? [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL] : [Constants.CB_GET_HL, Constants.CB_GET_CONTEXT],
@@ -1593,9 +1594,9 @@ export class WYSIWYG {
                 /// #if MOBILE
                 openByMobile(linkAddress);
                 /// #else
-                if (window.siyuan.ctrlIsPressed) {
+                if (ctrlIsPressed) {
                     openBy(linkAddress, "folder");
-                } else if (window.siyuan.shiftIsPressed) {
+                } else if (event.shiftKey) {
                     openBy(linkAddress, "app");
                 } else {
                     openAsset(linkAddress, fileIds[2], "right");
@@ -1604,7 +1605,7 @@ export class WYSIWYG {
                 return;
             }
 
-            if (aElement && !window.siyuan.altIsPressed) {
+            if (aElement && !event.altKey) {
                 event.stopPropagation();
                 event.preventDefault();
                 const linkAddress = aElement.getAttribute("data-href");
@@ -1617,16 +1618,16 @@ export class WYSIWYG {
                         (!linkPathname.endsWith(".pdf") ||
                             (linkPathname.endsWith(".pdf") && !linkAddress.startsWith("file://")))
                     ) {
-                        if (window.siyuan.ctrlIsPressed) {
+                        if (ctrlIsPressed) {
                             openBy(linkAddress, "folder");
-                        } else if (window.siyuan.shiftIsPressed) {
+                        } else if (event.shiftKey) {
                             openBy(linkAddress, "app");
                         } else {
                             openAsset(linkPathname, parseInt(getSearch("page", linkAddress)), "right");
                         }
                     } else {
                         /// #if !BROWSER
-                        if (window.siyuan.ctrlIsPressed) {
+                        if (ctrlIsPressed) {
                             openBy(linkAddress, "folder");
                         } else {
                             openBy(linkAddress, "app");
@@ -1650,8 +1651,8 @@ export class WYSIWYG {
 
             /// #if !MOBILE
             const tagElement = hasClosestByAttribute(event.target, "data-type", "tag");
-            if (tagElement && !window.siyuan.altIsPressed && protyle.model) {
-                openGlobalSearch(`#${tagElement.textContent}#`, !window.siyuan.ctrlIsPressed);
+            if (tagElement && !event.altKey && protyle.model) {
+                openGlobalSearch(`#${tagElement.textContent}#`, !ctrlIsPressed);
                 hideElements(["dialog"]);
                 return;
             }
@@ -1663,21 +1664,21 @@ export class WYSIWYG {
                 /// #if MOBILE
                 openMobileFileById(embedId, [Constants.CB_GET_ALL]);
                 /// #else
-                if (window.siyuan.shiftIsPressed) {
+                if (event.shiftKey) {
                     openFileById({
                         id: embedId,
                         position: "bottom",
                         action: [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL],
                         zoomIn: true
                     });
-                } else if (window.siyuan.altIsPressed) {
+                } else if (event.altKey) {
                     openFileById({
                         id: embedId,
                         position: "right",
                         action: [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL],
                         zoomIn: true
                     });
-                } else if (window.siyuan.ctrlIsPressed) {
+                } else if (ctrlIsPressed) {
                     openFileById({
                         id: embedId,
                         action: [Constants.CB_GET_FOCUS, Constants.CB_GET_ALL],
@@ -1767,7 +1768,7 @@ export class WYSIWYG {
 
             // 需放在属性后,否则数学公式无法点击属性;需放在 action 后,否则嵌入块的的 action 无法打开;需放在嵌入块后,否则嵌入块中的数学公式会被打开
             const mathElement = hasClosestByAttribute(event.target, "data-subtype", "math");
-            if (!window.siyuan.shiftIsPressed && !window.siyuan.ctrlIsPressed && mathElement && !protyle.disabled) {
+            if (!event.shiftKey && !ctrlIsPressed && mathElement && !protyle.disabled) {
                 protyle.toolbar.showRender(protyle, mathElement);
                 event.stopPropagation();
                 return;
@@ -1782,7 +1783,7 @@ export class WYSIWYG {
                         clientY: event.clientY
                     });
                 } else if (!protyle.disabled && actionElement.parentElement.classList.contains("li")) {
-                    if (window.siyuan.altIsPressed) {
+                    if (event.altKey) {
                         // 展开/折叠当前层级的所有列表项
                         if (actionElement.parentElement.parentElement.classList.contains("protyle-wysiwyg")) {
                             // 缩放列表项 https://ld246.com/article/1653123034794
@@ -1810,9 +1811,9 @@ export class WYSIWYG {
                             updateTransaction(protyle, actionElement.parentElement.parentElement.getAttribute("data-node-id"), actionElement.parentElement.parentElement.outerHTML, oldHTML);
                         }
                         hideElements(["gutter"], protyle);
-                    } else if (window.siyuan.shiftIsPressed) {
+                    } else if (event.shiftKey) {
                         openAttr(actionElement.parentElement, protyle);
-                    } else if (window.siyuan.ctrlIsPressed) {
+                    } else if (ctrlIsPressed) {
                         zoomOut(protyle, actionElement.parentElement.getAttribute("data-node-id"));
                     } else {
                         if (actionElement.classList.contains("protyle-action--task")) {
@@ -1841,14 +1842,14 @@ export class WYSIWYG {
 
             const selectElement = hasClosestByClassName(event.target, "hr") ||
                 hasClosestByClassName(event.target, "iframe");
-            if (!window.siyuan.shiftIsPressed && !window.siyuan.ctrlIsPressed && selectElement) {
+            if (!event.shiftKey && !ctrlIsPressed && selectElement) {
                 selectElement.classList.add("protyle-wysiwyg--select");
                 event.stopPropagation();
                 return;
             }
 
             const imgElement = hasTopClosestByClassName(event.target, "img");
-            if (!window.siyuan.shiftIsPressed && !window.siyuan.ctrlIsPressed && imgElement) {
+            if (!event.shiftKey && !ctrlIsPressed && imgElement) {
                 imgElement.classList.add("img--select");
                 range.setStartAfter(imgElement);
                 range.collapse(true);
@@ -1907,7 +1908,7 @@ export class WYSIWYG {
                 /// #endif
             }, (isMobile() || window.webkit?.messageHandlers) ? 520 : 0); // Android/iPad 双击慢了出不来
             protyle.hint.enableExtend = false;
-            if (window.siyuan.shiftIsPressed) {
+            if (event.shiftKey) {
                 event.preventDefault();
                 event.stopPropagation();
                 // shift 多选
@@ -2016,7 +2017,7 @@ export class WYSIWYG {
                 focusByRange(range);
             }
 
-            if (window.siyuan.ctrlIsPressed) {
+            if (ctrlIsPressed) {
                 let ctrlElement = hasClosestBlock(event.target);
                 if (ctrlElement) {
                     ctrlElement = getTopAloneElement(ctrlElement) as HTMLElement;