@@ -582,14 +582,20 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
582582 for (int j = 0 ; j < p_method.arguments .size (); j++) {
583583 const DocData::ArgumentDoc &argument = p_method.arguments [j];
584584
585- class_desc->push_color (theme_cache.text_color );
586-
587585 if (j > 0 ) {
586+ class_desc->push_color (theme_cache.symbol_color );
588587 class_desc->add_text (" , " );
588+ class_desc->pop (); // color
589589 }
590590
591+ class_desc->push_color (theme_cache.text_color );
591592 class_desc->add_text (argument.name );
593+ class_desc->pop (); // color
594+
595+ class_desc->push_color (theme_cache.symbol_color );
592596 class_desc->add_text (colon_nbsp);
597+ class_desc->pop (); // color
598+
593599 _add_type (argument.type , argument.enumeration , argument.is_bitfield );
594600
595601 if (!argument.default_value .is_empty ()) {
@@ -601,20 +607,34 @@ void EditorHelp::_add_method(const DocData::MethodDoc &p_method, bool p_overview
601607 class_desc->add_text (_fix_constant (argument.default_value ));
602608 class_desc->pop (); // color
603609 }
604-
605- class_desc->pop (); // color
606610 }
607611
608612 if (is_vararg) {
609613 if (!p_method.arguments .is_empty ()) {
610- class_desc->push_color (theme_cache.text_color );
614+ class_desc->push_color (theme_cache.symbol_color );
611615 class_desc->add_text (" , " );
612616 class_desc->pop (); // color
613617 }
614618
615619 class_desc->push_color (theme_cache.symbol_color );
616620 class_desc->add_text (" ..." );
617621 class_desc->pop (); // color
622+
623+ const DocData::ArgumentDoc &rest_argument = p_method.rest_argument ;
624+
625+ class_desc->push_color (theme_cache.text_color );
626+ class_desc->add_text (rest_argument.name .is_empty () ? " args" : rest_argument.name );
627+ class_desc->pop (); // color
628+
629+ class_desc->push_color (theme_cache.symbol_color );
630+ class_desc->add_text (colon_nbsp);
631+ class_desc->pop (); // color
632+
633+ if (rest_argument.type .is_empty ()) {
634+ _add_type (" Array" );
635+ } else {
636+ _add_type (rest_argument.type , rest_argument.enumeration , rest_argument.is_bitfield );
637+ }
618638 }
619639
620640 class_desc->push_color (theme_cache.symbol_color );
@@ -1558,14 +1578,20 @@ void EditorHelp::_update_doc() {
15581578 for (int j = 0 ; j < signal.arguments .size (); j++) {
15591579 const DocData::ArgumentDoc &argument = signal.arguments [j];
15601580
1561- class_desc->push_color (theme_cache.text_color );
1562-
15631581 if (j > 0 ) {
1582+ class_desc->push_color (theme_cache.symbol_color );
15641583 class_desc->add_text (" , " );
1584+ class_desc->pop (); // color
15651585 }
15661586
1587+ class_desc->push_color (theme_cache.text_color );
15671588 class_desc->add_text (argument.name );
1589+ class_desc->pop (); // color
1590+
1591+ class_desc->push_color (theme_cache.symbol_color );
15681592 class_desc->add_text (colon_nbsp);
1593+ class_desc->pop (); // color
1594+
15691595 _add_type (argument.type , argument.enumeration , argument.is_bitfield );
15701596
15711597 // Signals currently do not support default argument values, neither the core nor GDScript.
@@ -1579,8 +1605,6 @@ void EditorHelp::_update_doc() {
15791605 class_desc->add_text (_fix_constant (argument.default_value ));
15801606 class_desc->pop (); // color
15811607 }
1582-
1583- class_desc->pop (); // color
15841608 }
15851609
15861610 class_desc->push_color (theme_cache.symbol_color );
@@ -2002,14 +2026,20 @@ void EditorHelp::_update_doc() {
20022026 for (int j = 0 ; j < annotation.arguments .size (); j++) {
20032027 const DocData::ArgumentDoc &argument = annotation.arguments [j];
20042028
2005- class_desc->push_color (theme_cache.text_color );
2006-
20072029 if (j > 0 ) {
2030+ class_desc->push_color (theme_cache.symbol_color );
20082031 class_desc->add_text (" , " );
2032+ class_desc->pop (); // color
20092033 }
20102034
2035+ class_desc->push_color (theme_cache.text_color );
20112036 class_desc->add_text (argument.name );
2037+ class_desc->pop (); // color
2038+
2039+ class_desc->push_color (theme_cache.symbol_color );
20122040 class_desc->add_text (colon_nbsp);
2041+ class_desc->pop (); // color
2042+
20132043 _add_type (argument.type , argument.enumeration , argument.is_bitfield );
20142044
20152045 if (!argument.default_value .is_empty ()) {
@@ -2021,20 +2051,34 @@ void EditorHelp::_update_doc() {
20212051 class_desc->add_text (_fix_constant (argument.default_value ));
20222052 class_desc->pop (); // color
20232053 }
2024-
2025- class_desc->pop (); // color
20262054 }
20272055
20282056 if (annotation.qualifiers .contains (" vararg" )) {
20292057 if (!annotation.arguments .is_empty ()) {
2030- class_desc->push_color (theme_cache.text_color );
2058+ class_desc->push_color (theme_cache.symbol_color );
20312059 class_desc->add_text (" , " );
20322060 class_desc->pop (); // color
20332061 }
20342062
20352063 class_desc->push_color (theme_cache.symbol_color );
20362064 class_desc->add_text (" ..." );
20372065 class_desc->pop (); // color
2066+
2067+ const DocData::ArgumentDoc &rest_argument = annotation.rest_argument ;
2068+
2069+ class_desc->push_color (theme_cache.text_color );
2070+ class_desc->add_text (rest_argument.name .is_empty () ? " args" : rest_argument.name );
2071+ class_desc->pop (); // color
2072+
2073+ class_desc->push_color (theme_cache.symbol_color );
2074+ class_desc->add_text (colon_nbsp);
2075+ class_desc->pop (); // color
2076+
2077+ if (rest_argument.type .is_empty ()) {
2078+ _add_type (" Array" );
2079+ } else {
2080+ _add_type (rest_argument.type , rest_argument.enumeration , rest_argument.is_bitfield );
2081+ }
20382082 }
20392083
20402084 class_desc->push_color (theme_cache.symbol_color );
@@ -3730,10 +3774,13 @@ EditorHelpBit::HelpData EditorHelpBit::_get_method_help_data(const StringName &p
37303774 }
37313775 current.doc_type = { method.return_type , method.return_enum , method.return_is_bitfield };
37323776 for (const DocData::ArgumentDoc &argument : method.arguments ) {
3733- const DocType argument_type = { argument.type , argument.enumeration , argument.is_bitfield };
3734- current.arguments .push_back ({ argument.name , argument_type , argument.default_value });
3777+ const DocType argument_doc_type = { argument.type , argument.enumeration , argument.is_bitfield };
3778+ current.arguments .push_back ({ argument.name , argument_doc_type , argument.default_value });
37353779 }
37363780 current.qualifiers = method.qualifiers ;
3781+ const DocData::ArgumentDoc &rest_argument = method.rest_argument ;
3782+ const DocType rest_argument_doc_type = { rest_argument.type , rest_argument.enumeration , rest_argument.is_bitfield };
3783+ current.rest_argument = { rest_argument.name , rest_argument_doc_type, rest_argument.default_value };
37373784
37383785 if (method.name == p_method_name) {
37393786 result = current;
@@ -3895,6 +3942,7 @@ void EditorHelpBit::_update_labels() {
38953942
38963943 title->pop (); // font
38973944
3945+ const Color text_color = get_theme_color (SNAME (" text_color" ), SNAME (" EditorHelp" ));
38983946 const Color symbol_color = get_theme_color (SNAME (" symbol_color" ), SNAME (" EditorHelp" ));
38993947 const Color value_color = get_theme_color (SNAME (" value_color" ), SNAME (" EditorHelp" ));
39003948 const Color qualifier_color = get_theme_color (SNAME (" qualifier_color" ), SNAME (" EditorHelp" ));
@@ -3970,10 +4018,14 @@ void EditorHelpBit::_update_labels() {
39704018 const ArgumentData &argument = help_data.arguments [i];
39714019
39724020 if (i > 0 ) {
4021+ title->push_color (symbol_color);
39734022 title->add_text (" , " );
4023+ title->pop (); // color
39744024 }
39754025
4026+ title->push_color (text_color);
39764027 title->add_text (argument.name );
4028+ title->pop (); // color
39774029
39784030 title->push_color (symbol_color);
39794031 title->add_text (colon_nbsp);
@@ -3994,12 +4046,30 @@ void EditorHelpBit::_update_labels() {
39944046
39954047 if (help_data.qualifiers .contains (" vararg" )) {
39964048 if (!help_data.arguments .is_empty ()) {
4049+ title->push_color (symbol_color);
39974050 title->add_text (" , " );
4051+ title->pop (); // color
39984052 }
39994053
40004054 title->push_color (symbol_color);
40014055 title->add_text (" ..." );
40024056 title->pop (); // color
4057+
4058+ const ArgumentData &rest_argument = help_data.rest_argument ;
4059+
4060+ title->push_color (text_color);
4061+ title->add_text (rest_argument.name .is_empty () ? " args" : rest_argument.name );
4062+ title->pop (); // color
4063+
4064+ title->push_color (symbol_color);
4065+ title->add_text (colon_nbsp);
4066+ title->pop (); // color
4067+
4068+ if (rest_argument.doc_type .type .is_empty ()) {
4069+ _add_type_to_title ({ " Array" , " " , false });
4070+ } else {
4071+ _add_type_to_title (rest_argument.doc_type );
4072+ }
40034073 }
40044074
40054075 title->push_color (symbol_color);
0 commit comments