Add ScriptEditor::close_file()

This commit is contained in:
nikitalita
2026-03-18 09:49:30 -07:00
parent 33b487690e
commit 8628738a34
3 changed files with 25 additions and 0 deletions
+15
View File
@@ -2611,6 +2611,20 @@ Ref<Resource> ScriptEditor::open_file(const String &p_file) {
return Ref<Resource>();
}
Error ScriptEditor::close_file(const String &p_file) {
for (int i = 0; i < tab_container->get_tab_count(); i++) {
ScriptEditorBase *seb = Object::cast_to<ScriptEditorBase>(tab_container->get_tab_control(i));
if (seb && seb->get_edited_resource()->get_path() == p_file) {
if (seb->is_unsaved()) {
seb->get_edited_resource()->reload_from_file();
}
_close_tab(i, false, _get_current_editor() == seb);
return OK;
}
}
return ERR_FILE_NOT_FOUND;
}
void ScriptEditor::_add_callback(Object *p_obj, const String &p_function, const PackedStringArray &p_args) {
ERR_FAIL_NULL(p_obj);
Ref<Script> scr = p_obj->get_script();
@@ -3776,6 +3790,7 @@ void ScriptEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear_docs_from_script", "script"), &ScriptEditor::clear_docs_from_script);
ClassDB::bind_method(D_METHOD("save_all_scripts"), &ScriptEditor::save_all_scripts);
ClassDB::bind_method(D_METHOD("close_file", "path"), &ScriptEditor::close_file);
ADD_SIGNAL(MethodInfo("editor_script_changed", PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, Script::get_class_static())));
ADD_SIGNAL(MethodInfo("script_close", PropertyInfo(Variant::OBJECT, "script", PROPERTY_HINT_RESOURCE_TYPE, Script::get_class_static())));