Merge pull request #113772 from LilithSilver/add-close-file

Add `ScriptEditor::close_file()`
This commit is contained in:
Thaddeus Crews
2026-03-30 13:35:19 -05:00
3 changed files with 25 additions and 0 deletions
+15
View File
@@ -2624,6 +2624,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();
@@ -3791,6 +3805,7 @@ void ScriptEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_unsaved_files"), &ScriptEditor::get_unsaved_files);
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())));