Skip to content

Commit 787cad1

Browse files
[Editor] Use separate EditorFileDialog for "Pack Project as ZIP"
This prevents state corruption for saving resources.
1 parent af2c713 commit 787cad1

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

editor/editor_node.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3030,14 +3030,9 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
30303030
String resource_path = ProjectSettings::get_singleton()->get_resource_path();
30313031
const String base_path = resource_path.substr(0, resource_path.rfind_char('/')) + "/";
30323032

3033-
file->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
3034-
file->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
3035-
file->clear_filters();
3036-
file->set_current_path(base_path);
3037-
file->set_current_file(ProjectZIPPacker::get_project_zip_safe_name());
3038-
file->add_filter("*.zip", "ZIP Archive");
3039-
file->set_title(TTR("Pack Project as ZIP..."));
3040-
file->popup_file_dialog();
3033+
file_pack_zip->set_current_path(base_path);
3034+
file_pack_zip->set_current_file(ProjectZIPPacker::get_project_zip_safe_name());
3035+
file_pack_zip->popup_file_dialog();
30413036
} break;
30423037

30433038
case FILE_UNDO: {
@@ -8068,6 +8063,14 @@ EditorNode::EditorNode() {
80688063
gui_base->add_child(file_script);
80698064
file_script->connect("file_selected", callable_mp(this, &EditorNode::_dialog_action));
80708065

8066+
file_pack_zip = memnew(EditorFileDialog);
8067+
file_pack_zip->connect("file_selected", callable_mp(this, &EditorNode::_dialog_action));
8068+
file_pack_zip->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);
8069+
file_pack_zip->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
8070+
file_pack_zip->add_filter("*.zip", "ZIP Archive");
8071+
file_pack_zip->set_title(TTR("Pack Project as ZIP..."));
8072+
gui_base->add_child(file_pack_zip);
8073+
80718074
file_menu->connect(SceneStringName(id_pressed), callable_mp(this, &EditorNode::_menu_option));
80728075
file_menu->connect("about_to_popup", callable_mp(this, &EditorNode::_update_file_menu_opened));
80738076

editor/editor_node.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,7 @@ class EditorNode : public Node {
385385
EditorFileDialog *file_export_lib = nullptr;
386386
EditorFileDialog *file_script = nullptr;
387387
EditorFileDialog *file_android_build_source = nullptr;
388+
EditorFileDialog *file_pack_zip = nullptr;
388389
String current_path;
389390
MenuButton *update_spinner = nullptr;
390391

0 commit comments

Comments
 (0)