You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Close shader in Shader Editor tab when deleting shader file in FileSystem panel
This commit is contained in:
@@ -64,6 +64,11 @@ void ShaderEditorPlugin::_update_shader_list() {
|
||||
}
|
||||
}
|
||||
|
||||
// When shader is deleted in filesystem dock, need this to correctly close shader editor.
|
||||
if (!path.is_empty()) {
|
||||
shader->set_meta("_edit_res_path", path);
|
||||
}
|
||||
|
||||
bool unsaved = false;
|
||||
if (edited_shader.shader_editor) {
|
||||
unsaved = edited_shader.shader_editor->is_unsaved();
|
||||
@@ -571,10 +576,20 @@ void ShaderEditorPlugin::_window_changed(bool p_visible) {
|
||||
make_floating->set_visible(!p_visible);
|
||||
}
|
||||
|
||||
void ShaderEditorPlugin::_file_removed(const String &p_removed_file) {
|
||||
for (uint32_t i = 0; i < edited_shaders.size(); i++) {
|
||||
const Ref<Shader> &shader = edited_shaders[i].shader;
|
||||
if (shader->get_meta("_edit_res_path") == p_removed_file) {
|
||||
_close_shader(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ShaderEditorPlugin::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_READY: {
|
||||
EditorNode::get_singleton()->connect("scene_closed", callable_mp(this, &ShaderEditorPlugin::_close_builtin_shaders_from_scene));
|
||||
FileSystemDock::get_singleton()->connect("file_removed", callable_mp(this, &ShaderEditorPlugin::_file_removed));
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user