Parcourir la source

Fixes to make exporting more responsive.

-Process and drop input in step functions.
-Hide editor file dialog right after pressing ok
-Use actual editor file dialogs for project export.
Juan Linietsky il y a 6 ans
Parent
commit
faaecd6987

+ 5 - 5
editor/editor_file_dialog.cpp

@@ -233,8 +233,8 @@ void EditorFileDialog::_file_entered(const String &p_file) {
 void EditorFileDialog::_save_confirm_pressed() {
 	String f = dir_access->get_current_dir().plus_file(file->get_text());
 	_save_to_recent();
-	emit_signal("file_selected", f);
 	hide();
+	emit_signal("file_selected", f);
 }
 
 void EditorFileDialog::_post_popup() {
@@ -343,8 +343,8 @@ void EditorFileDialog::_action_pressed() {
 
 		if (files.size()) {
 			_save_to_recent();
-			emit_signal("files_selected", files);
 			hide();
+			emit_signal("files_selected", files);
 		}
 
 		return;
@@ -354,8 +354,8 @@ void EditorFileDialog::_action_pressed() {
 
 	if ((mode == MODE_OPEN_ANY || mode == MODE_OPEN_FILE) && dir_access->file_exists(f)) {
 		_save_to_recent();
-		emit_signal("file_selected", f);
 		hide();
+		emit_signal("file_selected", f);
 	} else if (mode == MODE_OPEN_ANY || mode == MODE_OPEN_DIR) {
 
 		String path = dir_access->get_current_dir();
@@ -374,8 +374,8 @@ void EditorFileDialog::_action_pressed() {
 		}
 
 		_save_to_recent();
-		emit_signal("dir_selected", path);
 		hide();
+		emit_signal("dir_selected", path);
 	}
 
 	if (mode == MODE_SAVE_FILE) {
@@ -441,8 +441,8 @@ void EditorFileDialog::_action_pressed() {
 		} else {
 
 			_save_to_recent();
-			emit_signal("file_selected", f);
 			hide();
+			emit_signal("file_selected", f);
 		}
 	}
 }

+ 3 - 0
editor/progress_dialog.cpp

@@ -161,6 +161,7 @@ void ProgressDialog::_popup() {
 	main->set_margin(MARGIN_TOP, style->get_margin(MARGIN_TOP));
 	main->set_margin(MARGIN_BOTTOM, -style->get_margin(MARGIN_BOTTOM));
 
+	raise();
 	popup_centered(ms);
 }
 
@@ -219,6 +220,8 @@ bool ProgressDialog::task_step(const String &p_task, const String &p_state, int
 	last_progress_tick = OS::get_singleton()->get_ticks_usec();
 	if (cancel_hb->is_visible()) {
 		OS::get_singleton()->force_process_input();
+	} else {
+		OS::get_singleton()->process_and_drop_events();
 	}
 	Main::iteration(); // this will not work on a lot of platforms, so it's only meant for the editor
 	return cancelled;

+ 9 - 9
editor/project_export.cpp

@@ -931,7 +931,7 @@ void ProjectExportDialog::_export_project() {
 	Ref<EditorExportPlatform> platform = current->get_platform();
 	ERR_FAIL_COND(platform.is_null());
 
-	export_project->set_access(FileDialog::ACCESS_FILESYSTEM);
+	export_project->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
 	export_project->clear_filters();
 
 	List<String> extension_list = platform->get_binary_extensions(current);
@@ -955,7 +955,7 @@ void ProjectExportDialog::_export_project() {
 		export_project->get_line_edit()->connect("text_entered", export_project, "_file_entered");
 	}
 
-	export_project->set_mode(FileDialog::MODE_SAVE_FILE);
+	export_project->set_mode(EditorFileDialog::MODE_SAVE_FILE);
 	export_project->popup_centered_ratio();
 }
 
@@ -1184,9 +1184,9 @@ ProjectExportDialog::ProjectExportDialog() {
 	patches_hb->add_child(patch_export);
 	patches_hb->add_spacer();
 
-	patch_dialog = memnew(FileDialog);
+	patch_dialog = memnew(EditorFileDialog);
 	patch_dialog->add_filter("*.pck ; Pack File");
-	patch_dialog->set_mode(FileDialog::MODE_OPEN_FILE);
+	patch_dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE);
 	patch_dialog->connect("file_selected", this, "_patch_selected");
 	add_child(patch_dialog);
 
@@ -1266,11 +1266,11 @@ ProjectExportDialog::ProjectExportDialog() {
 	export_all_button->connect("pressed", this, "_export_all_dialog");
 	export_all_button->set_disabled(true);
 
-	export_pck_zip = memnew(FileDialog);
+	export_pck_zip = memnew(EditorFileDialog);
 	export_pck_zip->add_filter("*.zip ; ZIP File");
 	export_pck_zip->add_filter("*.pck ; Godot Game Pack");
-	export_pck_zip->set_access(FileDialog::ACCESS_FILESYSTEM);
-	export_pck_zip->set_mode(FileDialog::MODE_SAVE_FILE);
+	export_pck_zip->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
+	export_pck_zip->set_mode(EditorFileDialog::MODE_SAVE_FILE);
 	add_child(export_pck_zip);
 	export_pck_zip->connect("file_selected", this, "_export_pck_zip_selected");
 
@@ -1300,8 +1300,8 @@ ProjectExportDialog::ProjectExportDialog() {
 	export_templates_error->add_child(download_templates);
 	download_templates->connect("pressed", this, "_open_export_template_manager");
 
-	export_project = memnew(FileDialog);
-	export_project->set_access(FileDialog::ACCESS_FILESYSTEM);
+	export_project = memnew(EditorFileDialog);
+	export_project->set_access(EditorFileDialog::ACCESS_FILESYSTEM);
 	add_child(export_project);
 	export_project->connect("file_selected", this, "_export_project_to_path");
 	export_project->get_line_edit()->connect("text_changed", this, "_validate_export_path");

+ 3 - 3
editor/project_export.h

@@ -90,7 +90,7 @@ private:
 	Tree *patches;
 	Button *patch_export;
 	int patch_index;
-	FileDialog *patch_dialog;
+	EditorFileDialog *patch_dialog;
 	ConfirmationDialog *patch_erase;
 
 	Button *export_button;
@@ -139,8 +139,8 @@ private:
 	bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
 	void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
 
-	FileDialog *export_pck_zip;
-	FileDialog *export_project;
+	EditorFileDialog *export_pck_zip;
+	EditorFileDialog *export_project;
 	CheckBox *export_debug;
 	CheckBox *export_pck_zip_debug;
 

+ 1 - 1
platform/windows/os_windows.cpp

@@ -2485,7 +2485,7 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments,
 			}
 			(*r_pipe) += buf;
 			if (p_pipe_mutex) {
-				p_pipe_mutex->lock();
+				p_pipe_mutex->unlock();
 			}
 		}