Fix 2 loi UX sua-trong-form tren file Canva: (1) sau commit tra lai anh goc ngay + hint 'Dang ap dung...' thay vi hien anh-render-an (chu cu da xoa) nhieu giay gay cam giac chu bien mat; (2) vong no indices reflow noi pad DOC 8pt - dau tieng Viet (nga cua E~) ve bang op rieng co tam ngoai bbox+2pt nen sot lai dau lo lung sau sua
Build Windows portable / build (push) Canceled after 0s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-08 18:37:27 +07:00
co-authored by Claude Fable 5
parent 390fb82dd6
commit f78ed08d10
2 changed files with 16 additions and 7 deletions
+5 -2
View File
@@ -2770,9 +2770,12 @@ function startBlockTextEdit(o, lines, ev) {
ce.remove();
ov.querySelectorAll(".edit-box").forEach((b) => { b.style.display = ""; });
const changed = save && text.trim() && text !== original;
// Huỷ/không đổi gì → trả lại ảnh trang gốc (đang hiện bản ẩn run sửa).
if (!changed && bgSwapped) img.src = prevSrc;
// LUÔN trả lại ảnh trang gốc ngay (đang hiện bản ẩn run sửa): trong lúc
// engine áp thay đổi (file phức tạp mất vài giây) người dùng thấy chữ CŨ
// thay vì khoảng trống — hết cảm giác "chữ biến mất".
if (bgSwapped) img.src = prevSrc;
if (changed) {
$("editHint").textContent = "Đang áp dụng thay đổi…";
stageEditOp({
op: "reflowText",
indices: allRuns.map((r) => r.index),
+11 -5
View File
@@ -931,17 +931,23 @@ pub fn apply_edits(
bb.top = bb.top.max(r.top);
}
}
let pad = 2.0;
// Nới DỌC rộng hơn ngang: dấu tiếng Việt (ngã của Ễ…)
// nhiều file (Canva) vẽ bằng op riêng nằm TRÊN cap —
// tâm ngoài bbox +2pt → sót lại dấu lơ lửng sau sửa.
// 8pt vẫn nhỏ hơn nhịp dòng (≥12pt) nên không nuốt
// nhầm dòng bên cạnh.
let pad_x = 2.0;
let pad_y = 8.0;
for i in 0..entries.len() as u16 {
if idxs.contains(&i) {
continue;
}
let Some(r) = text_rect(i) else { continue };
let (cx, cy) = ((r.left + r.right) / 2.0, (r.bottom + r.top) / 2.0);
if cx >= bb.left - pad
&& cx <= bb.right + pad
&& cy >= bb.bottom - pad
&& cy <= bb.top + pad
if cx >= bb.left - pad_x
&& cx <= bb.right + pad_x
&& cy >= bb.bottom - pad_y
&& cy <= bb.top + pad_y
{
idxs.push(i);
if let Some(g) = geo_of(&page, i)? {