| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*  line_edit.h                                                          */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							|  |  |  | /*                       This file is part of:                           */ | 
					
						
							|  |  |  | /*                           GODOT ENGINE                                */ | 
					
						
							| 
									
										
										
										
											2017-08-27 14:16:55 +02:00
										 |  |  | /*                      https://godotengine.org                          */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2022-01-03 21:27:34 +01:00
										 |  |  | /* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.                 */ | 
					
						
							|  |  |  | /* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).   */ | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* Permission is hereby granted, free of charge, to any person obtaining */ | 
					
						
							|  |  |  | /* a copy of this software and associated documentation files (the       */ | 
					
						
							|  |  |  | /* "Software"), to deal in the Software without restriction, including   */ | 
					
						
							|  |  |  | /* without limitation the rights to use, copy, modify, merge, publish,   */ | 
					
						
							|  |  |  | /* distribute, sublicense, and/or sell copies of the Software, and to    */ | 
					
						
							|  |  |  | /* permit persons to whom the Software is furnished to do so, subject to */ | 
					
						
							|  |  |  | /* the following conditions:                                             */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* The above copyright notice and this permission notice shall be        */ | 
					
						
							|  |  |  | /* included in all copies or substantial portions of the Software.       */ | 
					
						
							|  |  |  | /*                                                                       */ | 
					
						
							|  |  |  | /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ | 
					
						
							|  |  |  | /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ | 
					
						
							|  |  |  | /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ | 
					
						
							|  |  |  | /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ | 
					
						
							|  |  |  | /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ | 
					
						
							|  |  |  | /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ | 
					
						
							|  |  |  | /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ | 
					
						
							|  |  |  | /*************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-05 00:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #ifndef LINE_EDIT_H
 | 
					
						
							|  |  |  | #define LINE_EDIT_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "scene/gui/control.h"
 | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | #include "scene/gui/popup_menu.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | class LineEdit : public Control { | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 	GDCLASS(LineEdit, Control); | 
					
						
							| 
									
										
										
										
											2015-08-15 07:47:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 	enum MenuItems { | 
					
						
							|  |  |  | 		MENU_CUT, | 
					
						
							|  |  |  | 		MENU_COPY, | 
					
						
							|  |  |  | 		MENU_PASTE, | 
					
						
							|  |  |  | 		MENU_CLEAR, | 
					
						
							|  |  |  | 		MENU_SELECT_ALL, | 
					
						
							|  |  |  | 		MENU_UNDO, | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 		MENU_REDO, | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 		MENU_DIR_INHERITED, | 
					
						
							|  |  |  | 		MENU_DIR_AUTO, | 
					
						
							|  |  |  | 		MENU_DIR_LTR, | 
					
						
							|  |  |  | 		MENU_DIR_RTL, | 
					
						
							|  |  |  | 		MENU_DISPLAY_UCC, | 
					
						
							|  |  |  | 		MENU_INSERT_LRM, | 
					
						
							|  |  |  | 		MENU_INSERT_RLM, | 
					
						
							|  |  |  | 		MENU_INSERT_LRE, | 
					
						
							|  |  |  | 		MENU_INSERT_RLE, | 
					
						
							|  |  |  | 		MENU_INSERT_LRO, | 
					
						
							|  |  |  | 		MENU_INSERT_RLO, | 
					
						
							|  |  |  | 		MENU_INSERT_PDF, | 
					
						
							|  |  |  | 		MENU_INSERT_ALM, | 
					
						
							|  |  |  | 		MENU_INSERT_LRI, | 
					
						
							|  |  |  | 		MENU_INSERT_RLI, | 
					
						
							|  |  |  | 		MENU_INSERT_FSI, | 
					
						
							|  |  |  | 		MENU_INSERT_PDI, | 
					
						
							|  |  |  | 		MENU_INSERT_ZWJ, | 
					
						
							|  |  |  | 		MENU_INSERT_ZWNJ, | 
					
						
							|  |  |  | 		MENU_INSERT_WJ, | 
					
						
							|  |  |  | 		MENU_INSERT_SHY, | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 		MENU_MAX | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-07 14:20:10 -04:00
										 |  |  | 	enum VirtualKeyboardType { | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_DEFAULT, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_MULTILINE, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_NUMBER, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_NUMBER_DECIMAL, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_PHONE, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_EMAIL_ADDRESS, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_PASSWORD, | 
					
						
							|  |  |  | 		KEYBOARD_TYPE_URL | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-15 07:47:22 +01:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2021-11-24 20:58:47 -06:00
										 |  |  | 	HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT; | 
					
						
							| 
									
										
										
										
											2015-08-15 07:47:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	bool editable = false; | 
					
						
							|  |  |  | 	bool pass = false; | 
					
						
							|  |  |  | 	bool text_changed_dirty = false; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-29 16:24:02 +02:00
										 |  |  | 	bool alt_start = false; | 
					
						
							|  |  |  | 	uint32_t alt_code = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	String undo_text; | 
					
						
							|  |  |  | 	String text; | 
					
						
							| 
									
										
										
										
											2016-06-27 19:47:40 +08:00
										 |  |  | 	String placeholder; | 
					
						
							| 
									
										
										
										
											2019-06-22 14:42:36 +02:00
										 |  |  | 	String placeholder_translated; | 
					
						
							| 
									
										
										
										
											2022-08-11 11:46:58 +03:00
										 |  |  | 	String secret_character = U"•"; | 
					
						
							| 
									
										
										
										
											2017-08-07 14:09:56 +03:00
										 |  |  | 	String ime_text; | 
					
						
							|  |  |  | 	Point2 ime_selection; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	RID text_rid; | 
					
						
							| 
									
										
										
										
											2021-02-09 18:24:36 +01:00
										 |  |  | 	float full_width = 0.0; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool selecting_enabled = true; | 
					
						
							| 
									
										
										
										
											2021-10-21 23:02:46 +02:00
										 |  |  | 	bool deselect_on_focus_loss_enabled = true; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	bool context_menu_enabled = true; | 
					
						
							|  |  |  | 	PopupMenu *menu = nullptr; | 
					
						
							|  |  |  | 	PopupMenu *menu_dir = nullptr; | 
					
						
							|  |  |  | 	PopupMenu *menu_ctl = nullptr; | 
					
						
							| 
									
										
										
										
											2019-08-07 17:09:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-18 23:36:22 +02:00
										 |  |  | 	bool caret_mid_grapheme_enabled = true; | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	int caret_column = 0; | 
					
						
							| 
									
										
										
										
											2022-07-06 11:57:06 +03:00
										 |  |  | 	float scroll_offset = 0.0; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	int max_length = 0; // 0 for no maximum.
 | 
					
						
							| 
									
										
										
										
											2015-08-15 07:47:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	String language; | 
					
						
							|  |  |  | 	TextDirection text_direction = TEXT_DIRECTION_AUTO; | 
					
						
							|  |  |  | 	TextDirection input_direction = TEXT_DIRECTION_LTR; | 
					
						
							| 
									
										
										
										
											2022-04-19 13:27:18 +03:00
										 |  |  | 	TextServer::StructuredTextParser st_parser = TextServer::STRUCTURED_TEXT_DEFAULT; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	Array st_args; | 
					
						
							|  |  |  | 	bool draw_control_chars = false; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	bool expand_to_text_length = false; | 
					
						
							|  |  |  | 	bool window_has_focus = true; | 
					
						
							| 
									
										
										
										
											2018-07-26 13:45:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	bool clear_button_enabled = false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	bool shortcut_keys_enabled = true; | 
					
						
							| 
									
										
										
										
											2019-08-07 17:09:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-22 08:04:48 +02:00
										 |  |  | 	bool virtual_keyboard_enabled = true; | 
					
						
							| 
									
										
										
										
											2022-07-07 14:20:10 -04:00
										 |  |  | 	VirtualKeyboardType virtual_keyboard_type = KEYBOARD_TYPE_DEFAULT; | 
					
						
							| 
									
										
										
										
											2020-07-22 08:04:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-12 09:43:50 +02:00
										 |  |  | 	bool middle_mouse_paste_enabled = true; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-28 09:07:18 +02:00
										 |  |  | 	bool drag_action = false; | 
					
						
							|  |  |  | 	bool drag_caret_force_displayed = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | 	Ref<Texture2D> right_icon; | 
					
						
							| 
									
										
										
										
											2021-10-26 09:40:11 +03:00
										 |  |  | 	bool flat = false; | 
					
						
							| 
									
										
										
										
											2018-08-11 12:04:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	struct Selection { | 
					
						
							| 
									
										
										
										
											2021-02-09 18:24:36 +01:00
										 |  |  | 		int begin = 0; | 
					
						
							|  |  |  | 		int end = 0; | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 		int start_column = 0; | 
					
						
							| 
									
										
										
										
											2021-02-09 18:24:36 +01:00
										 |  |  | 		bool enabled = false; | 
					
						
							|  |  |  | 		bool creating = false; | 
					
						
							| 
									
										
										
										
											2021-04-13 04:25:44 -04:00
										 |  |  | 		bool double_click = false; | 
					
						
							| 
									
										
										
										
											2021-02-09 18:24:36 +01:00
										 |  |  | 		bool drag_attempt = false; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	} selection; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 	struct TextOperation { | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 		int caret_column = 0; | 
					
						
							| 
									
										
										
										
											2022-07-06 11:57:06 +03:00
										 |  |  | 		float scroll_offset = 0.0; | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 		String text; | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	List<TextOperation> undo_stack; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	List<TextOperation>::Element *undo_stack_pos = nullptr; | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-26 13:45:38 +02:00
										 |  |  | 	struct ClearButtonStatus { | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 		bool press_attempt = false; | 
					
						
							|  |  |  | 		bool pressing_inside = false; | 
					
						
							| 
									
										
										
										
											2018-07-26 13:45:38 +02:00
										 |  |  | 	} clear_button_status; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-23 18:54:14 +02:00
										 |  |  | 	uint64_t last_dblclk = 0; | 
					
						
							|  |  |  | 	Vector2 last_dblclk_pos; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	bool caret_blink_enabled = false; | 
					
						
							|  |  |  | 	bool caret_force_displayed = false; | 
					
						
							|  |  |  | 	bool draw_caret = true; | 
					
						
							| 
									
										
										
										
											2022-08-13 14:52:35 +02:00
										 |  |  | 	float caret_blink_interval = 0.65; | 
					
						
							| 
									
										
										
										
											2022-07-04 23:17:34 +02:00
										 |  |  | 	double caret_blink_timer = 0.0; | 
					
						
							| 
									
										
										
										
											2022-10-09 16:51:01 +08:00
										 |  |  | 	bool caret_can_draw = false; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-16 20:37:35 +08:00
										 |  |  | 	bool pending_select_all_on_focus = false; | 
					
						
							|  |  |  | 	bool select_all_on_focus = false; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-31 15:02:40 +03:00
										 |  |  | 	struct ThemeCache { | 
					
						
							|  |  |  | 		Ref<StyleBox> normal; | 
					
						
							|  |  |  | 		Ref<StyleBox> read_only; | 
					
						
							|  |  |  | 		Ref<StyleBox> focus; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Ref<Font> font; | 
					
						
							|  |  |  | 		int font_size = 0; | 
					
						
							|  |  |  | 		Color font_color; | 
					
						
							|  |  |  | 		Color font_uneditable_color; | 
					
						
							|  |  |  | 		Color font_selected_color; | 
					
						
							|  |  |  | 		int font_outline_size; | 
					
						
							|  |  |  | 		Color font_outline_color; | 
					
						
							|  |  |  | 		Color font_placeholder_color; | 
					
						
							|  |  |  | 		int caret_width = 0; | 
					
						
							|  |  |  | 		Color caret_color; | 
					
						
							|  |  |  | 		int minimum_character_width = 0; | 
					
						
							|  |  |  | 		Color selection_color; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		Ref<Texture2D> clear_icon; | 
					
						
							|  |  |  | 		Color clear_button_color; | 
					
						
							|  |  |  | 		Color clear_button_color_pressed; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-01 18:52:49 +03:00
										 |  |  | 		float base_scale = 1.0; | 
					
						
							| 
									
										
										
										
											2022-08-31 15:02:40 +03:00
										 |  |  | 	} theme_cache; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 	void _clear_undo_stack(); | 
					
						
							|  |  |  | 	void _clear_redo(); | 
					
						
							|  |  |  | 	void _create_undo_state(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-13 16:31:57 -05:00
										 |  |  | 	Key _get_menu_action_accelerator(const String &p_action); | 
					
						
							| 
									
										
										
										
											2019-08-07 17:09:46 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 	void _shape(); | 
					
						
							|  |  |  | 	void _fit_to_width(); | 
					
						
							| 
									
										
										
										
											2016-09-06 20:34:24 -03:00
										 |  |  | 	void _text_changed(); | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 	void _emit_text_change(); | 
					
						
							| 
									
										
										
										
											2016-06-21 00:05:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void shift_selection_check_pre(bool); | 
					
						
							|  |  |  | 	void shift_selection_check_post(bool); | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void selection_fill_at_caret(); | 
					
						
							| 
									
										
										
										
											2022-07-06 11:57:06 +03:00
										 |  |  | 	void set_scroll_offset(float p_pos); | 
					
						
							|  |  |  | 	float get_scroll_offset() const; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void set_caret_at_pixel_pos(int p_x); | 
					
						
							| 
									
										
										
										
											2022-07-06 11:57:06 +03:00
										 |  |  | 	Vector2 get_caret_pixel_pos(); | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 00:05:52 +01:00
										 |  |  | 	void _reset_caret_blink_timer(); | 
					
						
							|  |  |  | 	void _toggle_draw_caret(); | 
					
						
							| 
									
										
										
										
											2022-10-09 16:51:01 +08:00
										 |  |  | 	void _validate_caret_can_draw(); | 
					
						
							| 
									
										
										
										
											2016-06-21 00:05:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void clear_internal(); | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-21 14:38:35 +01:00
										 |  |  | 	void _editor_settings_changed(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-07 21:32:00 +10:00
										 |  |  | 	void _swap_current_input_direction(); | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void _move_caret_left(bool p_select, bool p_move_by_word = false); | 
					
						
							|  |  |  | 	void _move_caret_right(bool p_select, bool p_move_by_word = false); | 
					
						
							|  |  |  | 	void _move_caret_start(bool p_select); | 
					
						
							|  |  |  | 	void _move_caret_end(bool p_select); | 
					
						
							| 
									
										
										
										
											2020-12-07 21:32:00 +10:00
										 |  |  | 	void _backspace(bool p_word = false, bool p_all_to_left = false); | 
					
						
							|  |  |  | 	void _delete(bool p_word = false, bool p_all_to_right = false); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 18:36:05 -03:00
										 |  |  | 	void _ensure_menu(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | protected: | 
					
						
							| 
									
										
										
										
											2022-10-03 00:50:05 +10:00
										 |  |  | 	bool _is_over_clear_button(const Point2 &p_pos) const; | 
					
						
							| 
									
										
										
										
											2022-08-31 15:02:40 +03:00
										 |  |  | 	virtual void _update_theme_item_cache() override; | 
					
						
							| 
									
										
										
										
											2021-03-03 20:51:35 -03:00
										 |  |  | 	void _notification(int p_what); | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 	static void _bind_methods(); | 
					
						
							| 
									
										
										
										
											2022-01-11 15:59:52 +02:00
										 |  |  | 	virtual void unhandled_key_input(const Ref<InputEvent> &p_event) override; | 
					
						
							| 
									
										
										
										
											2021-08-22 12:37:22 -03:00
										 |  |  | 	virtual void gui_input(const Ref<InputEvent> &p_event) override; | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-12 23:57:11 +03:00
										 |  |  | 	void _validate_property(PropertyInfo &p_property) const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2021-11-24 20:58:47 -06:00
										 |  |  | 	void set_horizontal_alignment(HorizontalAlignment p_alignment); | 
					
						
							|  |  |  | 	HorizontalAlignment get_horizontal_alignment() const; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	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; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual CursorShape get_cursor_shape(const Point2 &p_pos) const override; | 
					
						
							| 
									
										
										
										
											2018-07-26 13:45:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 	void menu_option(int p_option); | 
					
						
							| 
									
										
										
										
											2017-11-09 15:46:29 -05:00
										 |  |  | 	void set_context_menu_enabled(bool p_enable); | 
					
						
							|  |  |  | 	bool is_context_menu_enabled(); | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 	PopupMenu *get_menu() const; | 
					
						
							| 
									
										
										
										
											2021-07-16 18:36:05 -03:00
										 |  |  | 	bool is_menu_visible() const; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-17 15:40:44 -02:00
										 |  |  | 	void select(int p_from = 0, int p_to = -1); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void select_all(); | 
					
						
							| 
									
										
										
										
											2018-01-21 01:12:25 -05:00
										 |  |  | 	void selection_delete(); | 
					
						
							| 
									
										
										
										
											2017-12-17 15:40:44 -02:00
										 |  |  | 	void deselect(); | 
					
						
							| 
									
										
										
										
											2021-09-24 11:00:45 +03:00
										 |  |  | 	bool has_selection() const; | 
					
						
							|  |  |  | 	int get_selection_from_column() const; | 
					
						
							|  |  |  | 	int get_selection_to_column() const; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void delete_char(); | 
					
						
							| 
									
										
										
										
											2016-06-18 16:15:26 +02:00
										 |  |  | 	void delete_text(int p_from_column, int p_to_column); | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_text(String p_text); | 
					
						
							|  |  |  | 	String get_text() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_text_direction(TextDirection p_text_direction); | 
					
						
							|  |  |  | 	TextDirection get_text_direction() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_language(const String &p_language); | 
					
						
							|  |  |  | 	String get_language() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void set_draw_control_chars(bool p_draw_control_chars); | 
					
						
							|  |  |  | 	bool get_draw_control_chars() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-19 13:27:18 +03:00
										 |  |  | 	void set_structured_text_bidi_override(TextServer::StructuredTextParser p_parser); | 
					
						
							|  |  |  | 	TextServer::StructuredTextParser get_structured_text_bidi_override() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void set_structured_text_bidi_override_options(Array p_args); | 
					
						
							|  |  |  | 	Array get_structured_text_bidi_override_options() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-27 19:47:40 +08:00
										 |  |  | 	void set_placeholder(String p_text); | 
					
						
							|  |  |  | 	String get_placeholder() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void set_caret_column(int p_column); | 
					
						
							|  |  |  | 	int get_caret_column() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_max_length(int p_max_length); | 
					
						
							|  |  |  | 	int get_max_length() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void insert_text_at_caret(String p_text); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void clear(); | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void set_caret_mid_grapheme_enabled(const bool p_enabled); | 
					
						
							|  |  |  | 	bool is_caret_mid_grapheme_enabled() const; | 
					
						
							| 
									
										
										
										
											2020-09-09 16:00:32 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	bool is_caret_blink_enabled() const; | 
					
						
							|  |  |  | 	void set_caret_blink_enabled(const bool p_enabled); | 
					
						
							| 
									
										
										
										
											2016-06-21 00:05:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-13 14:52:35 +02:00
										 |  |  | 	float get_caret_blink_interval() const; | 
					
						
							|  |  |  | 	void set_caret_blink_interval(const float p_interval); | 
					
						
							| 
									
										
										
										
											2016-06-21 00:05:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void set_caret_force_displayed(const bool p_enabled); | 
					
						
							|  |  |  | 	bool is_caret_force_displayed() const; | 
					
						
							| 
									
										
										
										
											2020-06-21 19:15:57 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 	void copy_text(); | 
					
						
							|  |  |  | 	void cut_text(); | 
					
						
							|  |  |  | 	void paste_text(); | 
					
						
							| 
									
										
										
										
											2021-08-17 11:41:46 +08:00
										 |  |  | 	bool has_undo() const; | 
					
						
							|  |  |  | 	bool has_redo() const; | 
					
						
							| 
									
										
										
										
											2016-05-16 20:25:17 -03:00
										 |  |  | 	void undo(); | 
					
						
							| 
									
										
										
										
											2017-10-29 23:14:33 +00:00
										 |  |  | 	void redo(); | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_editable(bool p_editable); | 
					
						
							|  |  |  | 	bool is_editable() const; | 
					
						
							| 
									
										
										
										
											2016-03-09 00:00:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_secret(bool p_secret); | 
					
						
							|  |  |  | 	bool is_secret() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-28 20:24:48 +02:00
										 |  |  | 	void set_secret_character(const String &p_string); | 
					
						
							|  |  |  | 	String get_secret_character() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual Size2 get_minimum_size() const override; | 
					
						
							| 
									
										
										
										
											2015-10-17 10:29:54 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-28 19:31:25 +01:00
										 |  |  | 	void set_expand_to_text_length_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_expand_to_text_length_enabled() const; | 
					
						
							| 
									
										
										
										
											2016-09-06 20:34:24 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-26 13:45:38 +02:00
										 |  |  | 	void set_clear_button_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_clear_button_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-07 17:09:46 -07:00
										 |  |  | 	void set_shortcut_keys_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_shortcut_keys_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-22 08:04:48 +02:00
										 |  |  | 	void set_virtual_keyboard_enabled(bool p_enable); | 
					
						
							|  |  |  | 	bool is_virtual_keyboard_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-07 14:20:10 -04:00
										 |  |  | 	void set_virtual_keyboard_type(VirtualKeyboardType p_type); | 
					
						
							|  |  |  | 	VirtualKeyboardType get_virtual_keyboard_type() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-12 09:43:50 +02:00
										 |  |  | 	void set_middle_mouse_paste_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_middle_mouse_paste_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-07 17:09:46 -07:00
										 |  |  | 	void set_selecting_enabled(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_selecting_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-21 23:02:46 +02:00
										 |  |  | 	void set_deselect_on_focus_loss_enabled(const bool p_enabled); | 
					
						
							|  |  |  | 	bool is_deselect_on_focus_loss_enabled() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-11 15:43:37 -03:00
										 |  |  | 	void set_right_icon(const Ref<Texture2D> &p_icon); | 
					
						
							|  |  |  | 	Ref<Texture2D> get_right_icon(); | 
					
						
							| 
									
										
										
										
											2018-08-11 12:04:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-26 09:40:11 +03:00
										 |  |  | 	void set_flat(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_flat() const; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-16 20:37:35 +08:00
										 |  |  | 	void set_select_all_on_focus(bool p_enabled); | 
					
						
							|  |  |  | 	bool is_select_all_on_focus() const; | 
					
						
							|  |  |  | 	void clear_pending_select_all_on_focus(); // For other controls, e.g. SpinBox.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-10 11:34:39 +01:00
										 |  |  | 	virtual bool is_text_field() const override; | 
					
						
							| 
									
										
										
										
											2021-01-18 20:08:42 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void show_virtual_keyboard(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-04 09:18:44 +01:00
										 |  |  | 	LineEdit(const String &p_placeholder = String()); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	~LineEdit(); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-20 17:45:01 +02:00
										 |  |  | VARIANT_ENUM_CAST(LineEdit::MenuItems); | 
					
						
							| 
									
										
										
										
											2022-07-07 14:20:10 -04:00
										 |  |  | VARIANT_ENUM_CAST(LineEdit::VirtualKeyboardType); | 
					
						
							| 
									
										
										
										
											2015-08-15 07:47:22 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-23 23:41:51 +02:00
										 |  |  | #endif // LINE_EDIT_H
 |