summaryrefslogtreecommitdiff
path: root/src/direct/DirectPhotoPage.vala
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2023-11-20 18:26:07 +0100
committerJörg Frings-Fürst <debian@jff.email>2023-11-20 18:26:07 +0100
commit445dc18bf3e37044e17083fe76f76c17ceb6a0d7 (patch)
tree315f7cf2a7934b0ecf45ac2caa3c87949a90dfc4 /src/direct/DirectPhotoPage.vala
parent918f560d56129ed03f19d843ea2efd7cb4b23821 (diff)
parent394326a81d1248bbc5b1a35a8ae623c65ef6a9ea (diff)
Merge branch 'feature/upstream' into develop
Diffstat (limited to 'src/direct/DirectPhotoPage.vala')
-rw-r--r--src/direct/DirectPhotoPage.vala11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/direct/DirectPhotoPage.vala b/src/direct/DirectPhotoPage.vala
index cc7186c..50321e9 100644
--- a/src/direct/DirectPhotoPage.vala
+++ b/src/direct/DirectPhotoPage.vala
@@ -9,6 +9,7 @@ public class DirectPhotoPage : EditingHostPage {
private DirectViewCollection? view_controller = null;
private File current_save_dir;
private bool drop_if_dirty = false;
+ private bool in_shutdown = false;
public DirectPhotoPage(File file) {
base (DirectPhoto.global, file.get_basename());
@@ -319,7 +320,10 @@ public class DirectPhotoPage : EditingHostPage {
return true;
}
+ // Check if we can write the target format
bool is_writeable = get_photo().get_file_format().can_write();
+
+ // TODO: Check if we can actually write to the file
string save_option = is_writeable ? _("_Save") : _("_Save a Copy");
Gtk.ResponseType response = AppWindow.negate_affirm_cancel_question(
@@ -336,6 +340,7 @@ public class DirectPhotoPage : EditingHostPage {
on_save_as();
} else if ((response == Gtk.ResponseType.CANCEL) || (response == Gtk.ResponseType.DELETE_EVENT) ||
(response == Gtk.ResponseType.CLOSE)) {
+ in_shutdown = false;
return false;
}
@@ -343,6 +348,7 @@ public class DirectPhotoPage : EditingHostPage {
}
public bool check_quit() {
+ in_shutdown = true;
return check_ok_to_close_photo(get_photo(), false);
}
@@ -352,8 +358,9 @@ public class DirectPhotoPage : EditingHostPage {
private void save(File dest, int scale, ScaleConstraint constraint, Jpeg.Quality quality,
PhotoFileFormat format, bool copy_unmodified = false, bool save_metadata = true) {
+
Scaling scaling = Scaling.for_constraint(constraint, scale, false);
-
+
try {
get_photo().export(dest, scaling, quality, format, copy_unmodified, save_metadata);
} catch (Error err) {
@@ -363,6 +370,8 @@ public class DirectPhotoPage : EditingHostPage {
return;
}
+ if (in_shutdown) return;
+
// Fetch the DirectPhoto and reimport.
DirectPhoto photo;
DirectPhoto.global.fetch(dest, out photo, true);