Fix error when going to a text file by clicking in a result from "Find in files"

This commit is contained in:
Michael Alexsander Silva Dias 2019-08-07 23:06:33 -03:00
parent 05be97a607
commit 699afca7ef
2 changed files with 29 additions and 23 deletions

View file

@ -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);

View file

@ -2989,35 +2989,40 @@ 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 (ResourceLoader::exists(fpath)) {
if (fpath.get_extension() == "shader") { RES res = ResourceLoader::load(fpath);
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);
ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor()); if (fpath.get_extension() == "shader") {
if (ste) { ShaderEditorPlugin *shader_editor = Object::cast_to<ShaderEditorPlugin>(EditorNode::get_singleton()->get_editor_data().get_editor("Shader"));
ste->goto_line_selection(line_number - 1, begin, end); shader_editor->edit(res.ptr());
} shader_editor->make_visible(true);
} else { //if file is not valid script, load as text file 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);
Error err; ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
Ref<TextFile> text_file = _load_text_file(fpath, &err); if (ste) {
if (text_file.is_valid()) { ste->goto_line_selection(line_number - 1, begin, end);
edit(text_file);
TextEditor *te = Object::cast_to<TextEditor>(_get_current_editor());
if (te) {
te->goto_line_selection(line_number - 1, begin, end);
} }
return;
} }
} }
} }
// 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);
}
}
} }
void ScriptEditor::_start_find_in_files(bool with_replace) { void ScriptEditor::_start_find_in_files(bool with_replace) {