From 90dd325b08431d43520fb1be56e6856fe1fb273f Mon Sep 17 00:00:00 2001 From: Variable <77773850+Variable-ind@users.noreply.github.com> Date: Sat, 14 Oct 2023 16:25:34 +0500 Subject: [PATCH] If "Save & Exit" is pressed while quitting, don't close the software if the project failed to save (#920) * Dont quit if project failed to save * Formatting * spell Formatting --- src/Autoload/OpenSave.gd | 14 ++++++++------ src/Main.gd | 11 ++++++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Autoload/OpenSave.gd b/src/Autoload/OpenSave.gd index a1d3adad42b3..582b08e8c722 100644 --- a/src/Autoload/OpenSave.gd +++ b/src/Autoload/OpenSave.gd @@ -208,7 +208,7 @@ func open_pxo_file(path: String, untitled_backup := false, replace_empty := true func save_pxo_file( path: String, autosave: bool, use_zstd := true, project := Global.current_project -) -> void: +) -> bool: if !autosave: project.name = path.get_file() var serialized_data := project.serialize() @@ -218,7 +218,7 @@ func save_pxo_file( ) Global.error_dialog.popup_centered() Global.dialog_open(true) - return + return false var to_save := JSON.stringify(serialized_data) if !to_save: Global.error_dialog.set_text( @@ -226,7 +226,7 @@ func save_pxo_file( ) Global.error_dialog.popup_centered() Global.dialog_open(true) - return + return false # Check if a file with the same name exists. If it does, rename the new file temporarily. # Needed in case of a crash, so that the old file won't be replaced with an empty one. @@ -244,14 +244,15 @@ func save_pxo_file( var err := FileAccess.get_open_error() if err != OK: if temp_path.is_valid_filename(): - return + return false Global.error_dialog.set_text( tr("File failed to save. Error code %s (%s)") % [err, error_string(err)] ) Global.error_dialog.popup_centered() Global.dialog_open(true) - file.close() - return + if file: # this would be null if we attempt to save filenames such as "//\\||.pxo" + file.close() + return false if !autosave: current_save_paths[Global.current_project_index] = path @@ -302,6 +303,7 @@ func save_pxo_file( ) save_project_to_recent_list(path) + return true func open_image_as_new_tab(path: String, image: Image) -> void: diff --git a/src/Main.gd b/src/Main.gd index 904b8c7f15e4..f1dfe9abecbc 100644 --- a/src/Main.gd +++ b/src/Main.gd @@ -284,12 +284,13 @@ func save_project(path: String) -> void: var zstd: bool = ( Global.save_sprites_dialog.get_vbox().get_node("ZSTDCompression").button_pressed ) - OpenSave.save_pxo_file(path, false, zstd) - Global.open_sprites_dialog.current_dir = path.get_base_dir() - Global.config_cache.set_value("data", "current_dir", path.get_base_dir()) + var success = OpenSave.save_pxo_file(path, false, zstd) + if success: + Global.open_sprites_dialog.current_dir = path.get_base_dir() + Global.config_cache.set_value("data", "current_dir", path.get_base_dir()) - if is_quitting_on_save: - _quit() + if is_quitting_on_save: + _quit() func _on_SaveSpriteHTML5_confirmed() -> void: