You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2026-01-05 19:31:35 +00:00
Merge pull request #58536 from winterpixelgames/feature/virtual-keyboard-types
Add support for multiple virtual keyboard types
This commit is contained in:
@@ -1513,9 +1513,9 @@ void LineEdit::clear() {
|
||||
void LineEdit::show_virtual_keyboard() {
|
||||
if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_VIRTUAL_KEYBOARD) && virtual_keyboard_enabled) {
|
||||
if (selection.enabled) {
|
||||
DisplayServer::get_singleton()->virtual_keyboard_show(text, get_global_rect(), false, max_length, selection.begin, selection.end);
|
||||
DisplayServer::get_singleton()->virtual_keyboard_show(text, get_global_rect(), DisplayServer::VirtualKeyboardType(virtual_keyboard_type), max_length, selection.begin, selection.end);
|
||||
} else {
|
||||
DisplayServer::get_singleton()->virtual_keyboard_show(text, get_global_rect(), false, max_length, caret_column);
|
||||
DisplayServer::get_singleton()->virtual_keyboard_show(text, get_global_rect(), DisplayServer::VirtualKeyboardType(virtual_keyboard_type), max_length, caret_column);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2040,6 +2040,14 @@ bool LineEdit::is_virtual_keyboard_enabled() const {
|
||||
return virtual_keyboard_enabled;
|
||||
}
|
||||
|
||||
void LineEdit::set_virtual_keyboard_type(VirtualKeyboardType p_type) {
|
||||
virtual_keyboard_type = p_type;
|
||||
}
|
||||
|
||||
LineEdit::VirtualKeyboardType LineEdit::get_virtual_keyboard_type() const {
|
||||
return virtual_keyboard_type;
|
||||
}
|
||||
|
||||
void LineEdit::set_middle_mouse_paste_enabled(bool p_enabled) {
|
||||
middle_mouse_paste_enabled = p_enabled;
|
||||
}
|
||||
@@ -2280,6 +2288,8 @@ void LineEdit::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("is_context_menu_enabled"), &LineEdit::is_context_menu_enabled);
|
||||
ClassDB::bind_method(D_METHOD("set_virtual_keyboard_enabled", "enable"), &LineEdit::set_virtual_keyboard_enabled);
|
||||
ClassDB::bind_method(D_METHOD("is_virtual_keyboard_enabled"), &LineEdit::is_virtual_keyboard_enabled);
|
||||
ClassDB::bind_method(D_METHOD("set_virtual_keyboard_type", "type"), &LineEdit::set_virtual_keyboard_type);
|
||||
ClassDB::bind_method(D_METHOD("get_virtual_keyboard_type"), &LineEdit::get_virtual_keyboard_type);
|
||||
ClassDB::bind_method(D_METHOD("set_clear_button_enabled", "enable"), &LineEdit::set_clear_button_enabled);
|
||||
ClassDB::bind_method(D_METHOD("is_clear_button_enabled"), &LineEdit::is_clear_button_enabled);
|
||||
ClassDB::bind_method(D_METHOD("set_shortcut_keys_enabled", "enable"), &LineEdit::set_shortcut_keys_enabled);
|
||||
@@ -2329,6 +2339,15 @@ void LineEdit::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(MENU_INSERT_SHY);
|
||||
BIND_ENUM_CONSTANT(MENU_MAX);
|
||||
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_DEFAULT);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_MULTILINE);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_NUMBER);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_NUMBER_DECIMAL);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_PHONE);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_EMAIL_ADDRESS);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_PASSWORD);
|
||||
BIND_ENUM_CONSTANT(KEYBOARD_TYPE_URL);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::STRING, "placeholder_text"), "set_placeholder", "get_placeholder");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "alignment", PROPERTY_HINT_ENUM, "Left,Center,Right,Fill"), "set_horizontal_alignment", "get_horizontal_alignment");
|
||||
@@ -2339,6 +2358,7 @@ void LineEdit::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "expand_to_text_length"), "set_expand_to_text_length_enabled", "is_expand_to_text_length_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "context_menu_enabled"), "set_context_menu_enabled", "is_context_menu_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "virtual_keyboard_enabled"), "set_virtual_keyboard_enabled", "is_virtual_keyboard_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "virtual_keyboard_type", PROPERTY_HINT_ENUM, "Default,Multiline,Number,Decimal,Phone,Email,Password,URL"), "set_virtual_keyboard_type", "get_virtual_keyboard_type");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "clear_button_enabled"), "set_clear_button_enabled", "is_clear_button_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "shortcut_keys_enabled"), "set_shortcut_keys_enabled", "is_shortcut_keys_enabled");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "middle_mouse_paste_enabled"), "set_middle_mouse_paste_enabled", "is_middle_mouse_paste_enabled");
|
||||
|
||||
@@ -70,6 +70,17 @@ public:
|
||||
MENU_MAX
|
||||
};
|
||||
|
||||
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
|
||||
};
|
||||
|
||||
private:
|
||||
HorizontalAlignment alignment = HORIZONTAL_ALIGNMENT_LEFT;
|
||||
|
||||
@@ -120,6 +131,7 @@ private:
|
||||
bool shortcut_keys_enabled = true;
|
||||
|
||||
bool virtual_keyboard_enabled = true;
|
||||
VirtualKeyboardType virtual_keyboard_type = KEYBOARD_TYPE_DEFAULT;
|
||||
|
||||
bool middle_mouse_paste_enabled = true;
|
||||
|
||||
@@ -311,6 +323,9 @@ public:
|
||||
void set_virtual_keyboard_enabled(bool p_enable);
|
||||
bool is_virtual_keyboard_enabled() const;
|
||||
|
||||
void set_virtual_keyboard_type(VirtualKeyboardType p_type);
|
||||
VirtualKeyboardType get_virtual_keyboard_type() const;
|
||||
|
||||
void set_middle_mouse_paste_enabled(bool p_enabled);
|
||||
bool is_middle_mouse_paste_enabled() const;
|
||||
|
||||
@@ -335,5 +350,6 @@ public:
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(LineEdit::MenuItems);
|
||||
VARIANT_ENUM_CAST(LineEdit::VirtualKeyboardType);
|
||||
|
||||
#endif // LINE_EDIT_H
|
||||
|
||||
@@ -1466,7 +1466,7 @@ void TextEdit::_notification(int p_what) {
|
||||
caret_end = caret_start + post_text.length();
|
||||
}
|
||||
|
||||
DisplayServer::get_singleton()->virtual_keyboard_show(get_text(), get_global_rect(), true, -1, caret_start, caret_end);
|
||||
DisplayServer::get_singleton()->virtual_keyboard_show(get_text(), get_global_rect(), DisplayServer::KEYBOARD_TYPE_MULTILINE, -1, caret_start, caret_end);
|
||||
}
|
||||
} break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user