From 224a236896061e6d653700fb7f00260752d5ba2a Mon Sep 17 00:00:00 2001 From: bymyself Date: Sun, 2 Mar 2025 08:49:57 -0700 Subject: [PATCH] Fix pasting image from browser on Windows (#2797) --- src/composables/usePaste.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/composables/usePaste.ts b/src/composables/usePaste.ts index ff7f2554d..9a9eaa376 100644 --- a/src/composables/usePaste.ts +++ b/src/composables/usePaste.ts @@ -15,18 +15,23 @@ export const usePaste = () => { const workspaceStore = useWorkspaceStore() const canvasStore = useCanvasStore() - const pasteItemOnNode = ( + const pasteItemsOnNode = ( items: DataTransferItemList, - node: LGraphNode | null + node: LGraphNode | null, + contentType: string ) => { if (!node) return - const blob = items[0]?.getAsFile() + const filteredItems = Array.from(items).filter((item) => + item.type.startsWith(contentType) + ) + + const blob = filteredItems[0]?.getAsFile() if (!blob) return node.pasteFile?.(blob) node.pasteFiles?.( - Array.from(items) + Array.from(filteredItems) .map((i) => i.getAsFile()) .filter((f) => f !== null) ) @@ -71,14 +76,14 @@ export const usePaste = () => { } graph?.change() } - pasteItemOnNode(items, imageNode) + pasteItemsOnNode(items, imageNode, 'image') return } else if (item.type.startsWith('video/')) { if (!videoNode) { // No video node selected: add a new one // TODO: when video node exists } else { - pasteItemOnNode(items, videoNode) + pasteItemsOnNode(items, videoNode, 'video') return } } else if (item.type.startsWith('audio/')) { @@ -91,7 +96,7 @@ export const usePaste = () => { } graph?.change() } - pasteItemOnNode(items, audioNode) + pasteItemsOnNode(items, audioNode, 'audio') return } }