From ea07c37fe0945fe25f8aaa792454d72bd96ee82f Mon Sep 17 00:00:00 2001 From: rope Date: Sun, 20 Sep 2026 13:23:07 +0100 Subject: [PATCH] Remember annotation mode --- data/org.gnome.Loupe.gschema.xml.in | 4 ++++ src/widgets/image_window.rs | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/data/org.gnome.Loupe.gschema.xml.in b/data/org.gnome.Loupe.gschema.xml.in index 9a9d1d5..55c4344 100644 --- a/data/org.gnome.Loupe.gschema.xml.in +++ b/data/org.gnome.Loupe.gschema.xml.in @@ -9,5 +9,9 @@ true Copy the image to the clipboard after annotation changes + + true + Open images in annotation mode + diff --git a/src/widgets/image_window.rs b/src/widgets/image_window.rs index 52ca719..c0d90cf 100644 --- a/src/widgets/image_window.rs +++ b/src/widgets/image_window.rs @@ -489,12 +489,17 @@ mod imp { } }); - // Connect draw mode button (headerbar toggle) + // Remember annotation mode and apply it to each newly opened image. + let draw_mode_settings = LpApplication::default().settings(); imp.draw_mode_button.connect_toggled(glib::clone!( #[weak] obj, move |btn| { let active = btn.is_active(); + if let Err(err) = draw_mode_settings.set_boolean("annotation-mode", active) + { + tracing::warn!("Failed to save annotation mode setting: {err}"); + } let imp = obj.imp(); imp.draw_toolbar_revealer.set_reveal_child(active); if let Some(img) = imp.image_view.current_image() { @@ -509,6 +514,11 @@ mod imp { } } )); + imp.draw_mode_button.set_active( + LpApplication::default() + .settings() + .boolean("annotation-mode"), + ); // Tool buttons imp.draw_freeform_btn.connect_toggled(glib::clone!( @@ -1004,6 +1014,9 @@ impl LpImageWindow { // Properties view let current_image: Option = current_page.as_ref().map(|x| x.image()); imp.properties_view.set_image(current_image.as_ref()); + if let Some(image) = current_image.as_ref() { + image.set_drawing_mode(imp.draw_mode_button.is_active()); + } let has_image = current_page.is_some();