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

emit_signal(SNAME("empty_clicked"), get_local_mouse_position(), mb->get_button_index());
		}
	}
	if (mb.is_valid() && mb->get_button_index() == MouseButton::WHEEL_UP && mb->is_pressed()) {
		scroll_bar->set_value(scroll_bar->get_value() - scroll_bar->get_page() * mb->get_factor() / 8);
	}
	if (mb.is_valid() && mb->get_button_index() == MouseButton::WHEEL_DOWN && mb->is_pressed()) {
		scroll_bar->set_value(scroll_bar->get_value() + scroll_bar->get_page() * mb->get_factor() / 8);
	}
	if (p_event->is_pressed() && items.size() > 0) {
		if (p_event->is_action("ui_up", true)) {
			if (!search_string.is_empty()) {
				uint64_t now = OS::get_singleton()->get_ticks_msec();
				uint64_t diff = now - search_time_msec;
				if (diff < uint64_t(GLOBAL_GET("gui/timers/incremental_search_max_interval_msec")) * 2) {
					for (int i = current - 1; i >= 0; i--) {
						if (CAN_SELECT(i) && items[i].text.begins_with(search_string)) {
							set_current(i);
							ensure_current_is_visible();
							if (select_mode == SELECT_SINGLE) {
								emit_signal(SNAME("item_selected"), current);
							}
							break;
						}
					}
					accept_event();
					return;
				}
			}
			if (current >= current_columns) {