From f54aa1db1eb9ab16145ab4dd40e0403b2a48eb5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20Cie=C5=9Blik?= <132496025+Hathor875@users.noreply.github.com> Date: Sat, 10 Oct 2026 21:11:19 +0200 Subject: [PATCH] fix(editing): recognize paragraph drafts as unsaved work (#811) (#843) * view: check Shift-Command-G before Command-G for find navigation (#810) * fix: recognize paragraph drafts as unsaved work (Issue #811) --------- Co-authored-by: Brandon Thomas --- crates/ui-egui/src/edit_text_ui.rs | 5 +++++ crates/ui-egui/src/editing.rs | 1 + 2 files changed, 6 insertions(+) diff --git a/crates/ui-egui/src/edit_text_ui.rs b/crates/ui-egui/src/edit_text_ui.rs index f5d530713..946a3080c 100644 --- a/crates/ui-egui/src/edit_text_ui.rs +++ b/crates/ui-egui/src/edit_text_ui.rs @@ -87,6 +87,11 @@ impl LineEditor { (self.max_width > self.rect.width()).then_some(self.max_width) } + /// Whether the edited text differs from the original (unsaved changes). + pub fn has_unsaved_text(&self) -> bool { + self.text != self.original + } + /// The formatting the panel changed. pub fn style(&self) -> pdfcraft_engine::BlockStyle { let (l, o) = (&self.look, &self.look0); diff --git a/crates/ui-egui/src/editing.rs b/crates/ui-egui/src/editing.rs index f1b3166e7..08aab2873 100644 --- a/crates/ui-egui/src/editing.rs +++ b/crates/ui-egui/src/editing.rs @@ -349,6 +349,7 @@ impl PdfCraftApp { || v.content.blocked().is_some() || v.forms.focus.as_ref().is_some_and(|f| crate::forms_ui::draft_edit(f, &doc.form).is_some()) || v.fill_text.as_ref().is_some_and(|t| !t.text.trim().is_empty()) + || v.line_editor.as_ref().map_or_else(|| false, |ed| ed.has_unsaved_text()) } /// Save the active document. Returns `true` if it was written.