diff options
Diffstat (limited to 'scene/gui/text_edit.cpp')
| -rw-r--r-- | scene/gui/text_edit.cpp | 23 | 
1 files changed, 19 insertions, 4 deletions
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 07ebdb6523..d6d8e74748 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -1631,8 +1631,8 @@ void TextEdit::_notification(int p_what) {  				DisplayServer::get_singleton()->window_set_ime_position(get_global_position() + cursor_pos, get_viewport()->get_window_id());  			} -			if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD)) { -				DisplayServer::get_singleton()->virtual_keyboard_show(get_text(), get_global_rect()); +			if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD) && virtual_keyboard_enabled) { +				DisplayServer::get_singleton()->virtual_keyboard_show(get_text(), get_global_rect(), true);  			}  		} break;  		case NOTIFICATION_FOCUS_EXIT: { @@ -1647,7 +1647,7 @@ void TextEdit::_notification(int p_what) {  			ime_text = "";  			ime_selection = Point2(); -			if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD)) { +			if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD) && virtual_keyboard_enabled) {  				DisplayServer::get_singleton()->virtual_keyboard_hide();  			}  		} break; @@ -1872,6 +1872,9 @@ void TextEdit::indent_right() {  	for (int i = start_line; i <= end_line; i++) {  		String line_text = get_line(i); +		if (line_text.size() == 0 && is_selection_active()) { +			continue; +		}  		if (indent_using_spaces) {  			// We don't really care where selection is - we just need to know indentation level at the beginning of the line.  			int left = _find_first_non_whitespace_column_of_line(line_text); @@ -3604,7 +3607,7 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {  			return;  		} -		if (!keycode_handled && !k->get_command()) { // For German keyboards. +		if (!keycode_handled && (!k->get_command() || (k->get_command() && k->get_alt()))) { // For German keyboards.  			if (k->get_unicode() >= 32) {  				if (readonly) { @@ -4889,6 +4892,7 @@ void TextEdit::_update_caches() {  	cache.folded_eol_icon = get_theme_icon("GuiEllipsis", "EditorIcons");  	cache.executing_icon = get_theme_icon("MainPlay", "EditorIcons");  	text.set_font(cache.font); +	text.clear_width_cache();  	if (syntax_highlighter.is_valid()) {  		syntax_highlighter->set_text_edit(this); @@ -6692,6 +6696,10 @@ void TextEdit::set_shortcut_keys_enabled(bool p_enabled) {  	_generate_context_menu();  } +void TextEdit::set_virtual_keyboard_enabled(bool p_enable) { +	virtual_keyboard_enabled = p_enable; +} +  void TextEdit::set_selecting_enabled(bool p_enabled) {  	selecting_enabled = p_enabled; @@ -6710,6 +6718,10 @@ bool TextEdit::is_shortcut_keys_enabled() const {  	return shortcut_keys_enabled;  } +bool TextEdit::is_virtual_keyboard_enabled() const { +	return virtual_keyboard_enabled; +} +  PopupMenu *TextEdit::get_menu() const {  	return menu;  } @@ -6762,6 +6774,8 @@ void TextEdit::_bind_methods() {  	ClassDB::bind_method(D_METHOD("is_context_menu_enabled"), &TextEdit::is_context_menu_enabled);  	ClassDB::bind_method(D_METHOD("set_shortcut_keys_enabled", "enable"), &TextEdit::set_shortcut_keys_enabled);  	ClassDB::bind_method(D_METHOD("is_shortcut_keys_enabled"), &TextEdit::is_shortcut_keys_enabled); +	ClassDB::bind_method(D_METHOD("set_virtual_keyboard_enabled", "enable"), &TextEdit::set_virtual_keyboard_enabled); +	ClassDB::bind_method(D_METHOD("is_virtual_keyboard_enabled"), &TextEdit::is_virtual_keyboard_enabled);  	ClassDB::bind_method(D_METHOD("set_selecting_enabled", "enable"), &TextEdit::set_selecting_enabled);  	ClassDB::bind_method(D_METHOD("is_selecting_enabled"), &TextEdit::is_selecting_enabled); @@ -6853,6 +6867,7 @@ void TextEdit::_bind_methods() {  	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "override_selected_font_color"), "set_override_selected_font_color", "is_overriding_selected_font_color");  	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled");  	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shortcut_keys_enabled"), "set_shortcut_keys_enabled", "is_shortcut_keys_enabled"); +	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");  	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "selecting_enabled"), "set_selecting_enabled", "is_selecting_enabled");  	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smooth_scrolling"), "set_smooth_scroll_enable", "is_smooth_scroll_enabled");  	ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "v_scroll_speed"), "set_v_scroll_speed", "get_v_scroll_speed");  |