Skip to content

Commit bcd0d87

Browse files
authored
Save as Dialog for unsaved projects that were changed during exiting the application. (#350)
* Make it possible to save changed projects on closing the application, even if they were not saved before. * Fixed issue with cancel file dialog * Removed unused line
1 parent e913764 commit bcd0d87

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

lorien/Main.gd

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ var _exit_requested := false
2828
var _dirty_project_to_close: Project = null
2929
var _player_enabled := false
3030

31+
signal file_dialog_finished
32+
3133
# -------------------------------------------------------------------------------------------------
3234
func _ready() -> void:
3335
# Init stuff
@@ -407,7 +409,9 @@ func _on_save_project_as() -> void:
407409
_file_dialog.current_file = active_project.filepath.get_file()
408410
_file_dialog.file_selected.connect(_on_file_selected_to_save_project)
409411
_file_dialog.close_requested.connect(_on_file_dialog_closed)
412+
_file_dialog.canceled.connect(_on_file_dialog_canceled)
410413
_file_dialog.popup_centered()
414+
await file_dialog_finished
411415

412416
# -------------------------------------------------------------------------------------------------
413417
func _on_save_project() -> void:
@@ -418,20 +422,26 @@ func _on_save_project() -> void:
418422
_file_dialog.invalidate()
419423
_file_dialog.file_selected.connect(_on_file_selected_to_save_project)
420424
_file_dialog.close_requested.connect(_on_file_dialog_closed)
425+
_file_dialog.canceled.connect(_on_file_dialog_canceled)
421426
_file_dialog.popup_centered()
422427
else:
423428
_save_project(active_project)
429+
# -------------------------------------------------------------------------------------------------
430+
func _on_file_dialog_canceled() -> void:
431+
file_dialog_finished.emit()
424432

425433
# -------------------------------------------------------------------------------------------------
426434
func _on_file_dialog_closed() -> void:
427435
_file_dialog.disfile_selected.connect(_on_file_selected_to_save_project)
428436
_file_dialog.disclose_requested.connect(_on_file_dialog_closed)
437+
file_dialog_finished.emit()
429438

430439
# -------------------------------------------------------------------------------------------------
431440
func _on_file_selected_to_save_project(filepath: String) -> void:
432441
var active_project: Project = ProjectManager.get_active_project()
433442
active_project.filepath = filepath
434-
_save_project(active_project)
443+
await(_save_project(active_project))
444+
file_dialog_finished.emit()
435445

436446
# -------------------------------------------------------------------------------------------------
437447
func _on_canvas_background_changed(color: Color) -> void:
@@ -456,7 +466,12 @@ func _on_tool_changed(tool_type: int) -> void:
456466
# -------------------------------------------------------------------------------------------------
457467
func _on_save_unsaved_changes() -> void:
458468
if _exit_requested:
459-
ProjectManager.save_all_projects()
469+
for project in ProjectManager.get_open_projects():
470+
ProjectManager.make_project_active(project)
471+
if project.filepath.is_empty() && project.loaded && project.dirty:
472+
await(_on_save_project_as())
473+
elif !project.filepath.is_empty() && project.loaded && project.dirty:
474+
await(_on_save_project())
460475
_save_state()
461476
get_tree().quit()
462477
else:

0 commit comments

Comments
 (0)