### Godot version

v4.2.dev1.official [0c2144da9]

### System information

Godot v4.2.dev1 - Windows 10.0.19044 - GLES3 (Compatibility) - AMD Radeon(TM) Vega 8 Graphics (Advanced Micro Devices, Inc.; 31.0.14051.5006) - AMD Ryzen 5 2500U with Radeon Vega Mobile Gfx (8 Threads)

### Issue description
**Edit: Bug introduced between 4.1.dev2 and 4.1.dev3. In dev2, the scrollbars can be dragged very smoothly, and even if the scrollbars are at the bottom, there is no performance loss.**

When there are too many warnings in the debugger and render mode is GLES3 (Compatibility).
The lag situation of the editor is positively correlated with the position of the scroll bar. The closer the scroll bar is to the bottom, the more lagging the editor becomes.
Although the English version may be a bit lag, the situation is much better, but the Chinese version will be very poor.
In forward+ mode, both Chinese and English perform similarly, with slight performance impact.

Chinese:

https://github.com/godotengine/godot/assets/45038185/2449fedb-113e-45b6-ba6a-0fbd3652175d

English:

https://github.com/godotengine/godot/assets/45038185/ff3448e5-d08e-4077-93ac-32e180a8cf3b




### Steps to reproduce

1. Run Project.
2. Waiting for warnings of around 1000.
3. When the scroll bar in the error panel of the debugger is at the top, test the editor.
4. Test the editor when the scroll bar is at the bottom.
5. Try Chinese language mode.
6. Try foward+ and GLES3 (Compatibility).

When switching languages, you may need to use arrow keys because of other bugs.

### Minimal reproduction project

[WarningLag.zip](https://github.com/godotengine/godot/files/12174463/WarningLag.zip)

if (p_item != nullptr && p_column >= 0 && p_column < p_item->cells.size()) {
		p_item->cells.write[p_column].dirty = true;
	}
	queue_redraw();
}
void Tree::item_selected(int p_column, TreeItem *p_item) {
	if (select_mode == SELECT_MULTI) {
		if (!p_item->cells[p_column].selectable) {
			return;
		}
		p_item->cells.write[p_column].selected = true;
		
		selected_col = p_column;
		selected_item = p_item;
	} else {
		select_single_item(p_item, root, p_column);
	}
	queue_redraw();
}
void Tree::item_deselected(int p_column, TreeItem *p_item) {