### Godot version

v4.1.stable.official [970459615]

### System information

Godot v4.1.stable - Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce MX330 (NVIDIA; 30.0.15.1169) - 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz (8 Threads)

### Issue description

Calling `RichTextLabel`'s `select_all` method has no visual indicator, but it must have one. 

### Steps to reproduce

- Add `RichTextLabel` node
- Set `selection_enabled` value to be `true`
- Call `$RichTextLabel.select_all() `method in `_ready`

### Minimal reproduction project

[RichTextLabel_bug.zip](https://github.com/godotengine/godot/files/12098913/RichTextLabel_bug.zip)

} else if (tab_size > 0) { 
		Vector<float> tabs;
		tabs.push_back(tab_size * p_base_font->get_char_size(' ', p_base_font_size).width);
		l.text_buf->tab_align(tabs);
	}
	Item *it_to = (p_line + 1 < (int)p_frame->lines.size()) ? p_frame->lines[p_line + 1].from : nullptr;
	for (Item *it = l.from; it && it != it_to; it = _get_next_item(it)) {
		switch (it->type) {
			case ITEM_TABLE: {
				ItemTable *table = static_cast<ItemTable *>(it);
				int col_count = table->columns.size();
				for (int i = 0; i < col_count; i++) {
					table->columns[i].width = 0;
				}
				int idx = 0;
				for (Item *E : table->subitems) {
					ERR_CONTINUE(E->type != ITEM_FRAME); 
					ItemFrame *frame = static_cast<ItemFrame *>(E);
					float prev_h = 0;
					for (int i = 0; i < (int)frame->lines.size(); i++) {
						MutexLock sub_lock(frame->lines[i].text_buf->get_mutex());
						int w = _find_margin(frame->lines[i].from, p_base_font, p_base_font_size) + 1;
						prev_h = _resize_line(frame, i, p_base_font, p_base_font_size, w, prev_h);
					}
					idx++;
				}
				
				const int available_width = p_width - theme_cache.table_h_separation * (col_count - 1);
				
				int total_ratio = 0;