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

all_fit = false;
				break;
			}
			if (same_column_width) {
				items.write[i].rect_cache.size.x = max_column_width;
			}
			items.write[i].rect_cache.position = ofs;
			max_h = MAX(max_h, items[i].rect_cache.size.y);
			ofs.x += items[i].rect_cache.size.x + theme_cache.h_separation;
			items.write[i].column = col;
			col++;
			if (col == current_columns) {
				if (i < items.size() - 1) {
					separators.push_back(ofs.y + max_h + theme_cache.v_separation / 2);
				}
				for (int j = i; j >= 0 && col > 0; j--, col--) {
					items.write[j].rect_cache.size.y = max_h;
				}
				ofs.x = 0;
				ofs.y += max_h + theme_cache.v_separation;
				col = 0;
				max_h = 0;
			}
		}
		for (int j = items.size() - 1; j >= 0 && col > 0; j--, col--) {
			items.write[j].rect_cache.size.y = max_h;
		}
		if (all_fit) {
			float page = MAX(0, size.height - theme_cache.panel_style->get_minimum_size().height);
			float max = MAX(page, ofs.y + max_h);