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();