### Godot version

4.0 stable

### System information

Manjaro Linux, kernel 6.1.1-1-MANJARO, AMD Ryzen 5 3600, AMD RX 580

### Issue description

The `wrap_mode` property of the `TextEdit` node doesn't seem to really do anything. Setting it to `LINE_WRAPPING_BOUNDARY` simply means that there won't be an horizontal scrollbar if the text overshoots the boundary, instead of actually forcing the text to the next line so that it stays visible.

### Steps to reproduce

Create a TextEdit node and set its `wrap_mode` property to `LINE_WRAPPING_BOUNDARY`

### Minimal reproduction project

[WrapBugDemo.zip](https://github.com/godotengine/godot/files/10875969/WrapBugDemo.zip)

}
			text_editor->set_line(line, delimiter + line_text);
		}
		
		int caret_i = 0;
		int selection_i = 0;
		int offset = (is_commented ? -1 : 1) * delimiter.length();
		for (const int &c2 : caret_edit_order) {
			bool is_line_selection = text_editor->has_selection(c2) && text_editor->get_selection_from_line(c2) < text_editor->get_selection_to_line(c2);
			if (text_editor->get_caret_line(c2) >= from && text_editor->get_caret_line(c2) <= to) {
				int caret_col = caret_cols[caret_i++];
				caret_col += (is_line_selection && caret_col == 0) ? 0 : offset;
				text_editor->set_caret_column(caret_col, c2 == 0, c2);
			}
			if (text_editor->has_selection(c2) && text_editor->get_selection_to_line(c2) >= from && text_editor->get_selection_to_line(c2) <= to) {
				int from_col = text_editor->get_selection_from_column(c2);
				from_col += (is_line_selection && from_col == 0) ? 0 : offset;
				int to_col = selection_to_cols[selection_i++];
				to_col += (to_col == 0) ? 0 : offset;
				text_editor->select(
						text_editor->get_selection_from_line(c2), from_col,
						text_editor->get_selection_to_line(c2), to_col, c2);
			}
		}
	}
	text_editor->merge_overlapping_carets();
	text_editor->end_complex_operation();
	text_editor->queue_redraw();
}
void CodeTextEditor::goto_line(int p_line) {