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

String lookup_symbol_word;
	void _set_symbol_lookup_word(const String &p_symbol);
	
	
	virtual void _handle_unicode_input_internal(const uint32_t p_unicode, int p_caret);
	virtual void _backspace_internal(int p_caret);
	virtual void _cut_internal(int p_caret);
	virtual void _copy_internal(int p_caret);
	virtual void _paste_internal(int p_caret);
	virtual void _paste_primary_clipboard_internal(int p_caret);
	GDVIRTUAL2(_handle_unicode_input, int, int)
	GDVIRTUAL1(_backspace, int)
	GDVIRTUAL1(_cut, int)
	GDVIRTUAL1(_copy, int)
	GDVIRTUAL1(_paste, int)
	GDVIRTUAL1(_paste_primary_clipboard, int)
public:
	
	virtual void unhandled_key_input(const Ref<InputEvent> &p_event) override;
	virtual void gui_input(const Ref<InputEvent> &p_gui_input) override;
	bool alt_input(const Ref<InputEvent> &p_gui_input);
	virtual Size2 get_minimum_size() const override;
	virtual bool is_text_field() const override;
	virtual CursorShape get_cursor_shape(const Point2 &p_pos = Point2i()) const override;
	virtual Variant get_drag_data(const Point2 &p_point) override;
	virtual bool can_drop_data(const Point2 &p_point, const Variant &p_data) const override;
	virtual void drop_data(const Point2 &p_point, const Variant &p_data) override;
	virtual String get_tooltip(const Point2 &p_pos) const override;
	void set_tooltip_request_func(const Callable &p_tooltip_callback);