From fe69ec58813a8bc92d3a9a436ad9174249758cc0 Mon Sep 17 00:00:00 2001 From: t-martine Date: Mon, 9 Feb 2026 21:30:45 +0100 Subject: [PATCH] Added the ability to paste one or more Images from the Clipboard (#1876) Co-authored-by: a3957273 <89583054+a3957273@users.noreply.github.com> Co-authored-by: GCHQ Developer 85297 <95289555+C85297@users.noreply.github.com> --- src/web/waiters/InputWaiter.mjs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/web/waiters/InputWaiter.mjs b/src/web/waiters/InputWaiter.mjs index d32ed9d15..083fb4957 100644 --- a/src/web/waiters/InputWaiter.mjs +++ b/src/web/waiters/InputWaiter.mjs @@ -151,8 +151,20 @@ class InputWaiter { // Event handlers EditorView.domEventHandlers({ paste(event, view) { + const clipboardData = event.clipboardData; + const items = clipboardData.items; + const files = []; + for (let i = 0; i < items.length; i++) { + const item = items[i]; + if (item.kind === "file") { + const file = item.getAsFile(); + files.push(file); + + event.preventDefault(); // Prevent the default paste behavior + } + } setTimeout(() => { - self.afterPaste(event); + self.afterPaste(files); }); } }) @@ -914,9 +926,12 @@ class InputWaiter { * Handler that fires just after input paste events. * Checks whether the EOL separator or character encoding should be updated. * - * @param {event} e + * @param {File[]} files - An array of any files that were included in the paste event */ - afterPaste(e) { + afterPaste(files) { + if (files.length > 0) { + this.loadUIFiles(files); + } // If EOL has been fixed, skip this. if (this.eolState > 1) return;