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"
This commit is contained in:
commit
ef05306ca2
2 changed files with 29 additions and 23 deletions
|
@ -524,6 +524,7 @@ FindInFilesPanel::FindInFilesPanel() {
|
|||
|
||||
_progress_bar = memnew(ProgressBar);
|
||||
_progress_bar->set_h_size_flags(SIZE_EXPAND_FILL);
|
||||
_progress_bar->set_v_size_flags(SIZE_SHRINK_CENTER);
|
||||
hbc->add_child(_progress_bar);
|
||||
set_progress_visible(false);
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
||||
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);
|
||||
|
||||
ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
|
||||
if (ste) {
|
||||
ste->goto_line_selection(line_number - 1, begin, end);
|
||||
}
|
||||
} else { //if file is not valid script, load as text file
|
||||
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);
|
||||
|
||||
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);
|
||||
ScriptTextEditor *ste = Object::cast_to<ScriptTextEditor>(_get_current_editor());
|
||||
if (ste) {
|
||||
ste->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) {
|
||||
|
|
Loading…
Reference in a new issue