From 2495871c48264abfea9149dd99ca812502b71595 Mon Sep 17 00:00:00 2001 From: Phantom <59059173+EurFelux@users.noreply.github.com> Date: Tue, 9 Sep 2025 12:42:26 +0800 Subject: [PATCH] fix(translate): improve pasting and file processing (#10060) * fix(translate): prevent default paste behavior only when handling files Only call event.preventDefault() when handling file pasting to allow text pasting by default. This fixes the issue where text pasting was being blocked unnecessarily. * fix(translate): append new text to existing content instead of replacing Ensure OCR and file reading operations append new content to existing text rather than replacing it entirely. This maintains user's previous input when processing additional files. --- .../src/pages/translate/TranslatePage.tsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/renderer/src/pages/translate/TranslatePage.tsx b/src/renderer/src/pages/translate/TranslatePage.tsx index 552da3ca03..9c829e0b2a 100644 --- a/src/renderer/src/pages/translate/TranslatePage.tsx +++ b/src/renderer/src/pages/translate/TranslatePage.tsx @@ -488,7 +488,7 @@ const TranslatePage: FC = () => { if (shouldOCR) { try { const ocrResult = await ocr(file) - setText(ocrResult.text) + setText(text + ocrResult.text) } finally { // do nothing when failed. because error should be handled inside } @@ -520,7 +520,7 @@ const TranslatePage: FC = () => { } else { try { const result = await window.api.fs.readText(file.path) - setText(result) + setText(text + result) } catch (e) { logger.error('Failed to read text file.', e as Error) window.message.error(t('translate.files.error.unknown') + ': ' + formatErrorMessage(e)) @@ -532,7 +532,7 @@ const TranslatePage: FC = () => { } } }, - [ocr, setText, t] + [ocr, setText, t, text] ) // 点击上传文件按钮 @@ -632,13 +632,12 @@ const TranslatePage: FC = () => { // 粘贴上传文件 const onPaste = useCallback( async (event: React.ClipboardEvent) => { - event.preventDefault() if (isProcessing) return setIsProcessing(true) logger.debug('event', event) - const text = event.clipboardData.getData('text') - if (!isEmpty(text)) { - setText(text) + const clipboardText = event.clipboardData.getData('text') + if (!isEmpty(clipboardText)) { + // depend default. this branch is only for preventing files when clipboard contains text } else if (event.clipboardData.files && event.clipboardData.files.length > 0) { event.preventDefault() const files = event.clipboardData.files @@ -684,7 +683,7 @@ const TranslatePage: FC = () => { } setIsProcessing(false) }, - [getSingleFile, isProcessing, processFile, setText, t] + [getSingleFile, isProcessing, processFile, t] ) return (