From e67f32977650853751befd8fb17a954bdd6cd838 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Tue, 27 Oct 2026 14:35:23 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=A4=8D=E5=88=B6=E9=9A=94=E7=A6=BB=E4=B8=8E?= =?UTF-8?q?=E5=BF=AB=E7=85=A7=E9=87=8A=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/webui/ofdgo.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/assets/webui/ofdgo.js b/assets/webui/ofdgo.js index f991532..3f64316 100644 --- a/assets/webui/ofdgo.js +++ b/assets/webui/ofdgo.js @@ -2962,7 +2962,11 @@ async function mountDocumentTab(tab) { async function releaseDocumentTab(tab) { if (tab.closed) return; const clipboard = workspace.objectClipboard; - if (clipboard?.tab === tab && !await prepareObjectClipboard(clipboard, tab) && workspace.objectClipboard === clipboard) workspace.objectClipboard = null; + if (clipboard?.tab === tab) { + const prepared = await prepareObjectClipboard(clipboard, tab); + clipboard.tab = null; + if (!prepared && workspace.objectClipboard === clipboard) workspace.objectClipboard = null; + } tab.closed = true; tab.print?.destroy(); tab.print = null; @@ -10509,6 +10513,9 @@ function copyEditorSelection(event) { if (previous.tab && !previous.tab.closed) return callTabWASM(previous.tab, "ofdgoDiscardObjects", previous.token); }).catch(() => {}); const capture = () => { + if (tab.closed || !state.editing || workspace.objectClipboard !== clipboard || state.objectClipboardToken !== clipboard.token + || clipboard.source !== `${tab.id}:${state.wasmSeq}:${state.doc.documentIndex || 0}:${state.doc.documentVersion || ""}` + || state.doc.pages[index]?.id !== clipboard.page) return false; const openSeq = state.openSeq, revision = state.editorInfo.revision; return callTabWASM(tab, "ofdgoCaptureObjects", index, ids, clipboard.token).then(async () => { clipboard.cut = false; @@ -10518,12 +10525,12 @@ function copyEditorSelection(event) { clipboard.cut = Boolean(await changeDocument("ofdgoDeleteObjects", { index, id: ids, items })); } return true; - }, err => { - if (isForegroundDocument(tab) && state.objectClipboardToken === clipboard.token) showError(err, false); - return false; }); }; - clipboard.ready = canvasEditor.nudge ? canvasEditor.commitNudge().then(saved => saved ? capture() : false) : capture(); + clipboard.ready = Promise.resolve(canvasEditor.nudge ? canvasEditor.commitNudge().then(saved => saved ? capture() : false) : capture()).catch(err => { + if (isForegroundDocument(tab) && state.objectClipboardToken === clipboard.token) showError(err, false); + return false; + }); return true; } @@ -10534,7 +10541,6 @@ async function prepareObjectClipboard(clipboard, owner = documentTab()) { const tab = clipboard.tab; clipboard.portable = callTabWASM(tab, "ofdgoExportObjects", clipboard.token).then(result => { clipboard.data = result.bytes; - clipboard.tab = null; return true; }, err => { clipboard.portable = null;