diff --git a/app/pdb/file-cmds.c b/app/pdb/file-cmds.c index 16f777e813..38d261ac8b 100644 --- a/app/pdb/file-cmds.c +++ b/app/pdb/file-cmds.c @@ -285,6 +285,28 @@ file_save_invoker (GimpProcedure *procedure, gimp_object_get_name (proc), new_args); + if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == + GIMP_PDB_SUCCESS) + { + GimpImage *image = + g_value_get_object (gimp_value_array_index (new_args, 1)); + + if (! strcmp (gimp_object_get_name (proc), "gimp-xcf-save")) + { + gimp_image_set_file (image, file); + + gimp_image_set_imported_file (image, NULL); + gimp_image_clean_all (image); + } + else + { + gimp_image_set_exported_file (image, file); + gimp_image_set_export_proc (image, file_proc); + + gimp_image_set_imported_file (image, NULL); + gimp_image_export_clean_all (image); + } + } gimp_value_array_unref (new_args); return return_vals; diff --git a/pdb/groups/file.pdb b/pdb/groups/file.pdb index 68d1b309d2..a67ea016f5 100644 --- a/pdb/groups/file.pdb +++ b/pdb/groups/file.pdb @@ -306,6 +306,28 @@ HELP gimp_object_get_name (proc), new_args); + if (g_value_get_enum (gimp_value_array_index (return_vals, 0)) == + GIMP_PDB_SUCCESS) + { + GimpImage *image = + g_value_get_object (gimp_value_array_index (new_args, 1)); + + if (! strcmp (gimp_object_get_name (proc), "gimp-xcf-save")) + { + gimp_image_set_file (image, file); + + gimp_image_set_imported_file (image, NULL); + gimp_image_clean_all (image); + } + else + { + gimp_image_set_exported_file (image, file); + gimp_image_set_export_proc (image, file_proc); + + gimp_image_set_imported_file (image, NULL); + gimp_image_export_clean_all (image); + } + } gimp_value_array_unref (new_args); return return_vals;