Skip to content

Commit

Permalink
If "Save & Exit" is pressed while quitting, don't close the software …
Browse files Browse the repository at this point in the history
…if the project failed to save (#920)

* Dont quit if project failed to save

* Formatting

* spell Formatting
  • Loading branch information
Variable-ind authored Oct 14, 2023
1 parent fd5adef commit 90dd325
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 11 deletions.
14 changes: 8 additions & 6 deletions src/Autoload/OpenSave.gd
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -218,15 +218,15 @@ 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(
tr("File failed to save. Converting dictionary to JSON failed.")
)
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.
Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand Down
11 changes: 6 additions & 5 deletions src/Main.gd
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 90dd325

Please sign in to comment.