### Godot version

v4.1.stable.official [970459615]

### System information

Windows 10

### Issue description

Changing a RichTextLabel's text property while dragging the scrollbar causes releasing the mouse to not actually prevent further dragging. Technically it's more pervasive than this since the scrollbar stops reporting other mouse input events (stops being highlighted when hovered, can't release) in general when updating every frame. This works fine for 3.5. This is still broken for 4.2dev3.

### Steps to reproduce

Change a RichTextLabel's text property while dragging the scrollbar. MRP attached.

https://github.com/godotengine/godot/assets/3820082/99c961af-e31c-4dde-8fd5-061e2e9e5fdc


### Minimal reproduction project

[rtl-scrollbar-mrp.zip](https://github.com/godotengine/godot/files/12327813/rtl-scrollbar-mrp.zip)

_draw_fbg_boxes(ci, rid, fbg_line_off, it_from, it_to, chr_range.x, chr_range.y, 0);
		
		Color selection_bg = theme_cache.selection_color;
		int sel_start = -1;
		int sel_end = -1;
		if (selection.active && (selection.from_frame->lines[selection.from_line].char_offset + selection.from_char) <= (l.char_offset + TS->shaped_text_get_range(rid).y) && (selection.to_frame->lines[selection.to_line].char_offset + selection.to_char) >= (l.char_offset + TS->shaped_text_get_range(rid).x)) {
			sel_start = MAX(TS->shaped_text_get_range(rid).x, (selection.from_frame->lines[selection.from_line].char_offset + selection.from_char) - l.char_offset);
			sel_end = MIN(TS->shaped_text_get_range(rid).y, (selection.to_frame->lines[selection.to_line].char_offset + selection.to_char) - l.char_offset);
			Vector<Vector2> sel = TS->shaped_text_get_selection(rid, sel_start, sel_end);
			for (int i = 0; i < sel.size(); i++) {
				Rect2 rect = Rect2(sel[i].x + p_ofs.x + off.x, p_ofs.y + off.y - TS->shaped_text_get_ascent(rid), sel[i].y - sel[i].x, TS->shaped_text_get_size(rid).y);
				RenderingServer::get_singleton()->canvas_item_add_rect(ci, rect, selection_bg);
			}
		}
		Vector2 ul_start;
		bool ul_started = false;
		Color ul_color;
		Vector2 dot_ul_start;
		bool dot_ul_started = false;
		Color dot_ul_color;
		Vector2 st_start;
		bool st_started = false;
		Color st_color;
		for (int i = 0; i < gl_size; i++) {
			bool selected = selection.active && (sel_start != -1) && (glyphs[i].start >= sel_start) && (glyphs[i].end <= sel_end);
			Item *it = _get_item_at_pos(it_from, it_to, glyphs[i].start);
			Color font_color = _find_color(it, p_base_color);
			if (_find_underline(it) || (_find_meta(it, nullptr) && underline_meta)) {
				if (!ul_started) {
					ul_started = true;