summaryrefslogtreecommitdiff
path: root/src/direct
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff.email>2023-11-24 08:37:53 +0100
committerJörg Frings-Fürst <debian@jff.email>2023-11-24 08:37:53 +0100
commit1bf62485f701b52ae27433e3570ac24cd7da886f (patch)
tree0f7be6ad3efd0c75fdad81d8bef5513d477f8d11 /src/direct
parent008bc99860fd353a5da5d06e6be5937f4a358aed (diff)
parenta7f185a9852392d1d6290771db6289c97c401a36 (diff)
Merge branch 'release/debian/0.32.3-1'debian/0.32.3-1
Diffstat (limited to 'src/direct')
-rw-r--r--src/direct/DirectPhotoPage.vala11
-rw-r--r--src/direct/DirectWindow.vala3
2 files changed, 10 insertions, 4 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);
diff --git a/src/direct/DirectWindow.vala b/src/direct/DirectWindow.vala
index 9eec5b1..baf6124 100644
--- a/src/direct/DirectWindow.vala
+++ b/src/direct/DirectWindow.vala
@@ -66,9 +66,6 @@ public class DirectWindow : AppWindow {
}
protected override void on_quit() {
- if (!get_direct_page().check_quit())
- return;
-
Config.Facade.get_instance().set_direct_window_state(maximized, dimensions);
base.on_quit();