From 5ef314e148e9cdccdfeae0474be066e8504d5b13 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Tue, 23 Aug 2022 20:57:39 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20macos=20=E6=97=A0=E6=B3=95=E7=B2=98?= =?UTF-8?q?=E8=B4=B4=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/protyle/util/paste.ts | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/app/src/protyle/util/paste.ts b/app/src/protyle/util/paste.ts index b8faafaea..ba2c3fb6b 100644 --- a/app/src/protyle/util/paste.ts +++ b/app/src/protyle/util/paste.ts @@ -2,6 +2,9 @@ import {Constants} from "../../constants"; import {uploadFiles, uploadLocalFiles} from "../upload"; import {processPasteCode, processRender} from "./processCode"; import {writeText} from "./compatibility"; +/// #if !BROWSER +import {clipboard} from "electron"; +/// #endif import {hasClosestBlock} from "./hasClosest"; import {focusByWbr, getEditorRange} from "./selection"; import {blockRender} from "../markdown/blockRender"; @@ -82,12 +85,25 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven } } /// #if !MOBILE - if (!textHTML && !textPlain && ("clipboardData" in event) && "darwin" !== window.siyuan.config.system.os) { - const xmlString = await fetchSyncPost("/api/clipboard/readFilePaths", {}); - if (xmlString.data.length > 0) { - uploadLocalFiles(xmlString.data, protyle); + if (!textHTML && !textPlain && ("clipboardData" in event)) { + if ("darwin" === window.siyuan.config.system.os) { + const xmlString = clipboard.read("NSFilenamesPboardType"); + const domParser = new DOMParser(); + const xmlDom = domParser.parseFromString(xmlString, "application/xml"); + const localFiles: string[] = []; + Array.from(xmlDom.getElementsByTagName("string")).forEach(item => { + localFiles.push(item.childNodes[0].nodeValue); + }); + uploadLocalFiles(localFiles, protyle); writeText(""); return; + } else { + const xmlString = await fetchSyncPost("/api/clipboard/readFilePaths", {}); + if (xmlString.data.length > 0) { + uploadLocalFiles(xmlString.data, protyle); + writeText(""); + return; + } } } /// #endif