### Godot version

v4.2.dev4.official [549fcce5f]

### System information

Godot v4.2.dev4 - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; 31.0.15.3640) - Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz (4 Threads)

### Issue description

If the folder has assigned a color, the color is reset to default when the folder name is changed. Also subfolder colors are reset.

Also moving a folder resets its and its subfolders' colors.

I would expect that renaming or moving doesn't rest the folder color. Especially if you have a large folder structure with many folder levels and assigned colors, it is a unfortunate to have all colors reset if the top level folder is renamed.

### Steps to reproduce

1. Create folder structure 

```
level1
	level2
		level3
```

2. Set folder colors to `level1` and `level2.`

3. Rename `level1` to `foobar` 

-> All folders are now using the default color.


### Minimal reproduction project

N/A
String resource_type = ResourceLoader::get_resource_type(fpath);
			String external_program;
			if (resource_type == "CompressedTexture2D" || resource_type == "Image") {
				if (file.get_extension() == "svg" || file.get_extension() == "svgz") {
					external_program = EDITOR_GET("filesystem/external_programs/vector_image_editor");
				} else {
					external_program = EDITOR_GET("filesystem/external_programs/raster_image_editor");
				}
			} else if (ClassDB::is_parent_class(resource_type, "AudioStream")) {
				external_program = EDITOR_GET("filesystem/external_programs/audio_editor");
			} else if (resource_type == "PackedScene") {
				
				if (file.get_extension() != "tscn" && file.get_extension() != "scn" && file.get_extension() != "res") {
					external_program = EDITOR_GET("filesystem/external_programs/3d_model_editor");
				}
			} else if (ClassDB::is_parent_class(resource_type, "Script")) {
				external_program = EDITOR_GET("text_editor/external/exec_path");
			}
			if (external_program.is_empty()) {
				OS::get_singleton()->shell_open(file);
			} else {
				List<String> args;
				args.push_back(file);
				OS::get_singleton()->create_process(external_program, args);
			}
		} break;
		case FILE_OPEN: {
			
			TreeItem *selected = tree->get_root();
			selected = tree->get_next_selected(selected);