### 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)

ensure_selected_visible = false;
			Vector2 base_ofs = theme_cache.panel_style->get_offset();
			base_ofs.y -= int(scroll_bar->get_value());
			
			const Rect2 clip(-base_ofs, size);
			
			int first_visible_separator = 0;
			{
				int lo = 0;
				int hi = separators.size();
				while (lo < hi) {
					const int mid = (lo + hi) / 2;
					if (separators[mid] < clip.position.y) {
						lo = mid + 1;
					} else {
						hi = mid;
					}
				}
				first_visible_separator = lo;
			}
			
			for (int i = first_visible_separator; i < separators.size(); i++) {
				if (separators[i] > clip.position.y + clip.size.y) {
					break; 
				}
				const int y = base_ofs.y + separators[i];
				draw_line(Vector2(theme_cache.panel_style->get_margin(SIDE_LEFT), y), Vector2(width, y), theme_cache.guide_color);
			}
			
			int first_item_visible;