Browse Source

Merge pull request #31189 from YeldhamDev/find_files_text_error

Fix error when going to a text file by clicking in a result from "Find in files"
Rémi Verschelde 6 years ago
parent
commit
ef05306ca2
2 changed files with 29 additions and 23 deletions
  1. 1 0
      editor/find_in_files.cpp
  2. 28 23
      editor/plugins/script_editor_plugin.cpp

+ 1 - 0
editor/find_in_files.cpp

@@ -524,6 +524,7 @@ FindInFilesPanel::FindInFilesPanel() {
 
 
 		_progress_bar = memnew(ProgressBar);
 		_progress_bar = memnew(ProgressBar);
 		_progress_bar->set_h_size_flags(SIZE_EXPAND_FILL);
 		_progress_bar->set_h_size_flags(SIZE_EXPAND_FILL);
+		_progress_bar->set_v_size_flags(SIZE_SHRINK_CENTER);
 		hbc->add_child(_progress_bar);
 		hbc->add_child(_progress_bar);
 		set_progress_visible(false);
 		set_progress_visible(false);
 
 

+ 28 - 23
editor/plugins/script_editor_plugin.cpp

@@ -2989,33 +2989,38 @@ void ScriptEditor::_on_find_in_files_requested(String text) {
 
 
 void ScriptEditor::_on_find_in_files_result_selected(String fpath, int line_number, int begin, int end) {
 void ScriptEditor::_on_find_in_files_result_selected(String fpath, int line_number, int begin, int end) {
 
 
-	RES res = ResourceLoader::load(fpath);
-	if (fpath.get_extension() == "shader") {
-		ShaderEditorPlugin *shader_editor = Object::cast_to<ShaderEditorPlugin>(EditorNode::get_singleton()->get_editor_data().get_editor("Shader"));
-		shader_editor->edit(res.ptr());
-		shader_editor->make_visible(true);
-		shader_editor->get_shader_editor()->goto_line_selection(line_number - 1, begin, end);
-	} else {
-		Ref<Script> script = res;
-		if (script.is_valid()) {
-			edit(script);
+	if (ResourceLoader::exists(fpath)) {
+		RES res = ResourceLoader::load(fpath);
+
+		if (fpath.get_extension() == "shader") {
+			ShaderEditorPlugin *shader_editor = Object::cast_to<ShaderEditorPlugin>(EditorNode::get_singleton()->get_editor_data().get_editor("Shader"));
+			shader_editor->edit(res.ptr());
+			shader_editor->make_visible(true);
+			shader_editor->get_shader_editor()->goto_line_selection(line_number - 1, begin, end);
+			return;
+		} else {
+			Ref<Script> script = res;
+			if (script.is_valid()) {
+				edit(script);
 
 
-			ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
-			if (ste) {
-				ste->goto_line_selection(line_number - 1, begin, end);
+				ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
+				if (ste) {
+					ste->goto_line_selection(line_number - 1, begin, end);
+				}
+				return;
 			}
 			}
-		} else { //if file is not valid script, load as text file
+		}
+	}
 
 
-			Error err;
-			Ref<TextFile> text_file = _load_text_file(fpath, &err);
-			if (text_file.is_valid()) {
-				edit(text_file);
+	// If the file is not a valid resource/script, load it as a text file.
+	Error err;
+	Ref<TextFile> text_file = _load_text_file(fpath, &err);
+	if (text_file.is_valid()) {
+		edit(text_file);
 
 
-				TextEditor *te = Object::cast_to<TextEditor>(_get_current_editor());
-				if (te) {
-					te->goto_line_selection(line_number - 1, begin, end);
-				}
-			}
+		TextEditor *te = Object::cast_to<TextEditor>(_get_current_editor());
+		if (te) {
+			te->goto_line_selection(line_number - 1, begin, end);
 		}
 		}
 	}
 	}
 }
 }