From ab5d71597aff54f439b180397fe021b26e5de1d8 Mon Sep 17 00:00:00 2001 From: diodiogod Date: Mon, 2 Feb 2026 20:56:56 -0300 Subject: [PATCH] Fix: Allow paste event to bubble for system clipboard access --- js/CanvasInteractions.js | 11 +++++++++-- src/CanvasInteractions.ts | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/js/CanvasInteractions.js b/js/CanvasInteractions.js index 21faa55..ef6ec67 100644 --- a/js/CanvasInteractions.js +++ b/js/CanvasInteractions.js @@ -575,8 +575,15 @@ export class CanvasInteractions { } break; case 'v': - // Paste from internal clipboard or system clipboard - this.canvas.canvasLayers.handlePaste('mouse'); + // Only handle internal clipboard paste here. + // If internal clipboard is empty, let the paste event bubble + // so handlePasteEvent can access e.clipboardData for system images. + if (this.canvas.canvasLayers.internalClipboard.length > 0) { + this.canvas.canvasLayers.pasteLayers(); + } else { + // Don't preventDefault - let paste event fire for system clipboard + handled = false; + } break; default: handled = false; diff --git a/src/CanvasInteractions.ts b/src/CanvasInteractions.ts index 52a1a4a..8f39703 100644 --- a/src/CanvasInteractions.ts +++ b/src/CanvasInteractions.ts @@ -704,8 +704,15 @@ export class CanvasInteractions { } break; case 'v': - // Paste from internal clipboard or system clipboard - this.canvas.canvasLayers.handlePaste('mouse'); + // Only handle internal clipboard paste here. + // If internal clipboard is empty, let the paste event bubble + // so handlePasteEvent can access e.clipboardData for system images. + if (this.canvas.canvasLayers.internalClipboard.length > 0) { + this.canvas.canvasLayers.pasteLayers(); + } else { + // Don't preventDefault - let paste event fire for system clipboard + handled = false; + } break; default: handled = false;