mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 13:56:32 +08:00
1 parent
7bc31b6b84
commit
e67f329776
1 file changed
+12
-6
+12
-6
@@ -2962,7 +2962,11 @@ async function mountDocumentTab(tab) {
|
|||||||
async function releaseDocumentTab(tab) {
|
async function releaseDocumentTab(tab) {
|
||||||
if (tab.closed) return;
|
if (tab.closed) return;
|
||||||
const clipboard = workspace.objectClipboard;
|
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.closed = true;
|
||||||
tab.print?.destroy();
|
tab.print?.destroy();
|
||||||
tab.print = null;
|
tab.print = null;
|
||||||
@@ -10509,6 +10513,9 @@ function copyEditorSelection(event) {
|
|||||||
if (previous.tab && !previous.tab.closed) return callTabWASM(previous.tab, "ofdgoDiscardObjects", previous.token);
|
if (previous.tab && !previous.tab.closed) return callTabWASM(previous.tab, "ofdgoDiscardObjects", previous.token);
|
||||||
}).catch(() => {});
|
}).catch(() => {});
|
||||||
const capture = () => {
|
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;
|
const openSeq = state.openSeq, revision = state.editorInfo.revision;
|
||||||
return callTabWASM(tab, "ofdgoCaptureObjects", index, ids, clipboard.token).then(async () => {
|
return callTabWASM(tab, "ofdgoCaptureObjects", index, ids, clipboard.token).then(async () => {
|
||||||
clipboard.cut = false;
|
clipboard.cut = false;
|
||||||
@@ -10518,12 +10525,12 @@ function copyEditorSelection(event) {
|
|||||||
clipboard.cut = Boolean(await changeDocument("ofdgoDeleteObjects", { index, id: ids, items }));
|
clipboard.cut = Boolean(await changeDocument("ofdgoDeleteObjects", { index, id: ids, items }));
|
||||||
}
|
}
|
||||||
return true;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10534,7 +10541,6 @@ async function prepareObjectClipboard(clipboard, owner = documentTab()) {
|
|||||||
const tab = clipboard.tab;
|
const tab = clipboard.tab;
|
||||||
clipboard.portable = callTabWASM(tab, "ofdgoExportObjects", clipboard.token).then(result => {
|
clipboard.portable = callTabWASM(tab, "ofdgoExportObjects", clipboard.token).then(result => {
|
||||||
clipboard.data = result.bytes;
|
clipboard.data = result.bytes;
|
||||||
clipboard.tab = null;
|
|
||||||
return true;
|
return true;
|
||||||
}, err => {
|
}, err => {
|
||||||
clipboard.portable = null;
|
clipboard.portable = null;
|
||||||
|
|||||||
Reference in new issue
Block a user