Fix #184: file upload replaces the main editing area on /new
CI / test (pull_request) Successful in 48s
CI / docker (pull_request) Skipped

Image files render fitted into the editor area (editor and gutter
hidden); the title auto-fills with the file name. Text files always
load their content into the editor, replacing any text already there,
instead of only filling an empty editor. Title auto-fill still only
applies when the title is blank; a typed title is never overwritten.
Drawing and cropping tools are noted in the issue as possible future
work and are intentionally not implemented here.
This commit is contained in:
fen
2026-09-10 11:54:59 -05:00
parent 9621faa052
commit 6c1bfaf15e
+10 -8
View File
@@ -280,11 +280,12 @@ async function showFileInEditor(file) {
if (!TEXT_EXTS.has(extOf(file.name))) return; // unknown binary: leave editor alone if (!TEXT_EXTS.has(extOf(file.name))) return; // unknown binary: leave editor alone
try { try {
const text = await file.text(); const text = await file.text();
if (!content.value.trim()) { // #184: the file replaces the main editing area, so the text always
content.value = text; // loads over whatever was in the editor (same rule as images, which
updateGutter(); // hide the editor entirely).
guessLang(); content.value = text;
} updateGutter();
guessLang();
} catch (e) {} } catch (e) {}
} }
@@ -306,9 +307,10 @@ function setAttachedFile(file) {
attachedFile = file; attachedFile = file;
renderFileChip(); renderFileChip();
setHidden('file-text-note', false); setHidden('file-text-note', false);
// #171: title auto-fill — images take the file name; text files use the // #171/#184: title auto-fill — images take the file name; text files
// language-placeholder convention (e.g. Python.py, fallback Text.txt). // use the language-placeholder convention (e.g. Python.py, fallback
// Only when the title is still blank; never overwrite a typed title. // Text.txt). Only when the title is still blank; never overwrite a
// typed title.
if (!$('title').value.trim()) { if (!$('title').value.trim()) {
if (IMAGE_RE.test(file.type)) { if (IMAGE_RE.test(file.type)) {
$('title').value = file.name; $('title').value = file.name;