@@ -2369,7 +2369,10 @@ void LineEdit::menu_option(int p_option) {
2369
2369
if (editable) {
2370
2370
insert_text_at_caret (String::chr (0x00AD ));
2371
2371
}
2372
- }
2372
+ } break ;
2373
+ case MENU_EMOJI_AND_SYMBOL: {
2374
+ show_emoji_and_symbol_picker ();
2375
+ } break ;
2373
2376
}
2374
2377
}
2375
2378
@@ -2381,6 +2384,22 @@ bool LineEdit::is_context_menu_enabled() {
2381
2384
return context_menu_enabled;
2382
2385
}
2383
2386
2387
+ void LineEdit::show_emoji_and_symbol_picker () {
2388
+ _update_ime_window_position ();
2389
+ DisplayServer::get_singleton ()->show_emoji_and_symbol_picker ();
2390
+ }
2391
+
2392
+ void LineEdit::set_emoji_menu_enabled (bool p_enabled) {
2393
+ if (emoji_menu_enabled != p_enabled) {
2394
+ emoji_menu_enabled = p_enabled;
2395
+ _update_context_menu ();
2396
+ }
2397
+ }
2398
+
2399
+ bool LineEdit::is_emoji_menu_enabled () const {
2400
+ return emoji_menu_enabled;
2401
+ }
2402
+
2384
2403
bool LineEdit::is_menu_visible () const {
2385
2404
return menu && menu->is_visible ();
2386
2405
}
@@ -2709,6 +2728,11 @@ void LineEdit::_generate_context_menu() {
2709
2728
menu_ctl->add_item (ETR (" Word Joiner (WJ)" ), MENU_INSERT_WJ);
2710
2729
menu_ctl->add_item (ETR (" Soft Hyphen (SHY)" ), MENU_INSERT_SHY);
2711
2730
2731
+ if (DisplayServer::get_singleton ()->has_feature (DisplayServer::FEATURE_EMOJI_AND_SYMBOL_PICKER)) {
2732
+ menu->add_item (ETR (" Emoji & Symbols" ), MENU_EMOJI_AND_SYMBOL);
2733
+ menu->add_separator ();
2734
+ }
2735
+
2712
2736
menu->add_item (ETR (" Cut" ), MENU_CUT);
2713
2737
menu->add_item (ETR (" Copy" ), MENU_COPY);
2714
2738
menu->add_item (ETR (" Paste" ), MENU_PASTE);
@@ -2764,6 +2788,9 @@ void LineEdit::_update_context_menu() {
2764
2788
m_menu->set_item_checked (idx, m_checked); \
2765
2789
}
2766
2790
2791
+ if (DisplayServer::get_singleton ()->has_feature (DisplayServer::FEATURE_EMOJI_AND_SYMBOL_PICKER)) {
2792
+ MENU_ITEM_DISABLED (menu, MENU_EMOJI_AND_SYMBOL, !editable || !emoji_menu_enabled)
2793
+ }
2767
2794
MENU_ITEM_ACTION_DISABLED (menu, MENU_CUT, " ui_cut" , !editable)
2768
2795
MENU_ITEM_ACTION (menu, MENU_COPY, " ui_copy" )
2769
2796
MENU_ITEM_ACTION_DISABLED (menu, MENU_PASTE, " ui_paste" , !editable)
@@ -2859,6 +2886,8 @@ void LineEdit::_bind_methods() {
2859
2886
ClassDB::bind_method (D_METHOD (" is_menu_visible" ), &LineEdit::is_menu_visible);
2860
2887
ClassDB::bind_method (D_METHOD (" set_context_menu_enabled" , " enable" ), &LineEdit::set_context_menu_enabled);
2861
2888
ClassDB::bind_method (D_METHOD (" is_context_menu_enabled" ), &LineEdit::is_context_menu_enabled);
2889
+ ClassDB::bind_method (D_METHOD (" set_emoji_menu_enabled" , " enable" ), &LineEdit::set_emoji_menu_enabled);
2890
+ ClassDB::bind_method (D_METHOD (" is_emoji_menu_enabled" ), &LineEdit::is_emoji_menu_enabled);
2862
2891
ClassDB::bind_method (D_METHOD (" set_virtual_keyboard_enabled" , " enable" ), &LineEdit::set_virtual_keyboard_enabled);
2863
2892
ClassDB::bind_method (D_METHOD (" is_virtual_keyboard_enabled" ), &LineEdit::is_virtual_keyboard_enabled);
2864
2893
ClassDB::bind_method (D_METHOD (" set_virtual_keyboard_type" , " type" ), &LineEdit::set_virtual_keyboard_type);
@@ -2917,6 +2946,7 @@ void LineEdit::_bind_methods() {
2917
2946
BIND_ENUM_CONSTANT (MENU_INSERT_ZWNJ);
2918
2947
BIND_ENUM_CONSTANT (MENU_INSERT_WJ);
2919
2948
BIND_ENUM_CONSTANT (MENU_INSERT_SHY);
2949
+ BIND_ENUM_CONSTANT (MENU_EMOJI_AND_SYMBOL);
2920
2950
BIND_ENUM_CONSTANT (MENU_MAX);
2921
2951
2922
2952
BIND_ENUM_CONSTANT (KEYBOARD_TYPE_DEFAULT);
@@ -2936,6 +2966,7 @@ void LineEdit::_bind_methods() {
2936
2966
ADD_PROPERTY (PropertyInfo (Variant::BOOL, " keep_editing_on_text_submit" ), " set_keep_editing_on_text_submit" , " is_editing_kept_on_text_submit" );
2937
2967
ADD_PROPERTY (PropertyInfo (Variant::BOOL, " expand_to_text_length" ), " set_expand_to_text_length_enabled" , " is_expand_to_text_length_enabled" );
2938
2968
ADD_PROPERTY (PropertyInfo (Variant::BOOL, " context_menu_enabled" ), " set_context_menu_enabled" , " is_context_menu_enabled" );
2969
+ ADD_PROPERTY (PropertyInfo (Variant::BOOL, " emoji_menu_enabled" ), " set_emoji_menu_enabled" , " is_emoji_menu_enabled" );
2939
2970
ADD_PROPERTY (PropertyInfo (Variant::BOOL, " virtual_keyboard_enabled" ), " set_virtual_keyboard_enabled" , " is_virtual_keyboard_enabled" );
2940
2971
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" );
2941
2972
ADD_PROPERTY (PropertyInfo (Variant::BOOL, " clear_button_enabled" ), " set_clear_button_enabled" , " is_clear_button_enabled" );
0 commit comments