### Godot version

v4.0.stable.official [92bee43ad]

### System information

Windows 10, 64bit

### Issue description

When change `ItemList`‘s icon_scale with code, itemlist not update:
![GIF](https://user-images.githubusercontent.com/35988767/222378909-ff9828aa-6714-478a-abbe-55477f28d85d.gif)

And force call `queue_redraw()`, icon size was udpate, but item border not.
![GIF](https://user-images.githubusercontent.com/35988767/222379478-832c7668-5182-4e1e-bfdb-cc137c19f77a.gif)

And if resize window, itemlist update correct.
![GIF](https://user-images.githubusercontent.com/35988767/222381049-3a45383d-9a40-4598-b64d-ec10d22754d7.gif)


### Steps to reproduce

/

### Minimal reproduction project

[ItemListTest.zip](https://github.com/godotengine/godot/files/10869385/ItemListTest.zip)

if (rtl) {
						draw_rect.position.x = size.width - draw_rect.position.x - draw_rect.size.x;
					}
					draw_texture_rect_region(items[i].icon, draw_rect, region, icon_modulate, items[i].icon_transposed);
				}
				if (items[i].tag_icon.is_valid()) {
					Point2 draw_pos = items[i].rect_cache.position;
					if (rtl) {
						draw_pos.x = size.width - draw_pos.x - items[i].tag_icon->get_width();
					}
					draw_texture(items[i].tag_icon, draw_pos + base_ofs);
				}
				if (!items[i].text.is_empty()) {
					int max_len = -1;
					Vector2 size2 = items[i].text_buf->get_size();
					if (fixed_column_width) {
						max_len = fixed_column_width;
					} else if (same_column_width) {
						max_len = items[i].rect_cache.size.x;
					} else {
						max_len = size2.x;
					}
					Color txt_modulate;
					if (items[i].selected) {
						txt_modulate = theme_cache.font_selected_color;
					} else if (hovered == i) {
						txt_modulate = theme_cache.font_hovered_color;
					} else if (items[i].custom_fg != Color()) {
						txt_modulate = items[i].custom_fg;
					} else {