diff --git a/news.d/49.1/fixed-editing-disable-trash-option b/news.d/49.1/fixed-editing-disable-trash-option new file mode 100644 index 0000000..da16489 --- /dev/null +++ b/news.d/49.1/fixed-editing-disable-trash-option @@ -0,0 +1 @@ +editing: Don't enable option to trash and replace with trash is not supported. diff --git a/src/widgets/edit_window.rs b/src/widgets/edit_window.rs index 1c26f39..9437396 100644 --- a/src/widgets/edit_window.rs +++ b/src/widgets/edit_window.rs @@ -15,7 +15,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -use std::cell::{OnceCell, RefCell}; +use std::cell::{Cell, OnceCell, RefCell}; use std::sync::Arc; use adw::prelude::*; @@ -56,6 +56,9 @@ mod imp { #[property(get, construct_only)] pub edit_crop: OnceCell, + /// Whether the original file can be trashed + pub(super) can_trash: Cell, + pub(super) operations: RefCell>>, save_cancellable: RefCell>, } @@ -107,6 +110,7 @@ mod imp { obj, async move { let can_trash = obj.original_image().can_trash().await; + obj.imp().can_trash.replace(can_trash); obj.action_set_enabled("edit.save-overwrite", can_trash); } )); @@ -451,7 +455,7 @@ mod imp { let enabled = self.is_save_sensitive() && !force_disabled; self.save.set_sensitive(enabled); - obj.action_set_enabled("edit.save-overwrite", enabled); + obj.action_set_enabled("edit.save-overwrite", enabled & self.can_trash.get()); obj.action_set_enabled("edit.save-copy", enabled); } }