From ecb3b5dc262c6370dd87b5caab5893b5e5e3f830 Mon Sep 17 00:00:00 2001 From: Advait Date: Thu, 5 Mar 2026 23:53:35 +0530 Subject: [PATCH 1/2] Images now paste under the cursor --- frontend/src/io-managers/input.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/io-managers/input.ts b/frontend/src/io-managers/input.ts index 5e59559973..bc71b19fc9 100644 --- a/frontend/src/io-managers/input.ts +++ b/frontend/src/io-managers/input.ts @@ -36,6 +36,7 @@ export function createInputManager(editor: Editor, dialog: DialogState, portfoli let canvasFocused = true; let inPointerLock = false; const shakeSamples: { x: number; y: number; time: number }[] = []; + let lastMousePosition: [number, number] = [0, 0]; let lastShakeTime = 0; // Event listeners @@ -159,6 +160,8 @@ export function createInputManager(editor: Editor, dialog: DialogState, portfoli function onPointerMove(e: PointerEvent) { potentiallyRestoreCanvasFocus(e); + lastMousePosition = [e.clientX, e.clientY]; + if (!e.buttons) viewportPointerInteractionOngoing = false; // Don't redirect pointer movement to the backend if there's no ongoing interaction and it's over a floating menu, or the graph overlay, on top of the canvas @@ -320,7 +323,7 @@ export function createInputManager(editor: Editor, dialog: DialogState, portfoli Array.from(dataTransfer.items).forEach(async (item) => { if (item.type === "text/plain") item.getAsString((text) => editor.handle.pasteText(text)); - await pasteFile(item, editor); + await pasteFile(item, editor, lastMousePosition); }); } From f399495b4d1e63aec37e5071ae293064f02a9ad2 Mon Sep 17 00:00:00 2001 From: Advait Andhale <82570791+advait87@users.noreply.github.com> Date: Fri, 6 Mar 2026 00:34:44 +0530 Subject: [PATCH 2/2] Change lastMousePosition to be undefined initially --- frontend/src/io-managers/input.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/io-managers/input.ts b/frontend/src/io-managers/input.ts index bc71b19fc9..5dd6c29d39 100644 --- a/frontend/src/io-managers/input.ts +++ b/frontend/src/io-managers/input.ts @@ -36,7 +36,7 @@ export function createInputManager(editor: Editor, dialog: DialogState, portfoli let canvasFocused = true; let inPointerLock = false; const shakeSamples: { x: number; y: number; time: number }[] = []; - let lastMousePosition: [number, number] = [0, 0]; + let lastMousePosition: [number, number] | undefined; let lastShakeTime = 0; // Event listeners