### Godot version

v4.0.1.stable.official [cacf49999]

### System information

Windows 10

### Issue description

If you use Sprite2D with a regular CompressedTexture and set a Region on it, then use a Sprite2D with a CanvasTexture and a different texture in the diffuse, and try to set a Region, the Region Editor display will show the texture from the first sprite2D node. I would expect it to show the diffuse texture from the current Sprite2D.
![image](https://user-images.githubusercontent.com/7292421/231493673-4eb152e0-81ed-4248-8465-71242c291cd2.png)
![image](https://user-images.githubusercontent.com/7292421/231493749-6173993b-e77c-4899-961e-9a055c07e351.png)




### Steps to reproduce

Make a sprite2D node
add a texture to it 
set Region to Enabled
click Edit Region under 'Region'
set any region

Make another sprite2D node
add a CanvasTexture to it
add a different texture to the Diffuse part
set Region to Enabled
click Edit Region under 'Region'
see wrong texture

### Minimal reproduction project

[RegionEditorBug.zip](https://github.com/godotengine/godot/files/11212626/RegionEditorBug.zip)

for (int x = 0; x < texture->get_width(); x++) {
			if (texture->is_pixel_opaque(x, y)) {
				bool found = false;
				for (Rect2 &E : autoslice_cache) {
					Rect2 grown = E.grow(1.5);
					if (grown.has_point(Point2(x, y))) {
						E.expand_to(Point2(x, y));
						E.expand_to(Point2(x + 1, y + 1));
						x = E.position.x + E.size.x - 1;
						bool merged = true;
						while (merged) {
							merged = false;
							bool queue_erase = false;
							for (List<Rect2>::Element *F = autoslice_cache.front(); F; F = F->next()) {
								if (queue_erase) {
									autoslice_cache.erase(F->prev());
									queue_erase = false;
								}
								if (F->get() == E) {
									continue;
								}
								if (E.grow(1).intersects(F->get())) {
									E.expand_to(F->get().position);
									E.expand_to(F->get().position + F->get().size);
									if (F->prev()) {
										F = F->prev();
										autoslice_cache.erase(F->next());
									} else {
										queue_erase = true;