@@ -526,13 +526,13 @@ void TabBar::_notification(int p_what) {
526526
527527 if (tabs[i].disabled ) {
528528 sb = theme_cache.tab_disabled_style ;
529- col = theme_cache.font_disabled_color ;
529+ col = tabs[i]. font_disabled_color_override . a > 0 ? tabs[i]. font_disabled_color_override : theme_cache.font_disabled_color ;
530530 } else if (i == hover) {
531531 sb = theme_cache.tab_hovered_style ;
532- col = theme_cache.font_hovered_color ;
532+ col = tabs[i]. font_hovered_color_override . a > 0 ? tabs[i]. font_hovered_color_override : theme_cache.font_hovered_color ;
533533 } else {
534534 sb = theme_cache.tab_unselected_style ;
535- col = theme_cache.font_unselected_color ;
535+ col = tabs[i]. font_unselected_color_override . a > 0 ? tabs[i]. font_unselected_color_override : theme_cache.font_unselected_color ;
536536 }
537537
538538 _draw_tab (sb, col, i, rtl ? (size.width - ofs - tab_separation_offset - tabs[i].size_cache ) : (ofs + tab_separation_offset), false );
@@ -550,8 +550,9 @@ void TabBar::_notification(int p_what) {
550550
551551 Ref<StyleBox> sb = tabs[current].disabled ? theme_cache.tab_disabled_style : theme_cache.tab_selected_style ;
552552 float x = rtl ? (size.width - tabs[current].ofs_cache - tab_separation_offset - tabs[current].size_cache ) : (tabs[current].ofs_cache + tab_separation_offset);
553+ Color col = tabs[current].font_selected_color_override .a > 0 ? tabs[current].font_selected_color_override : theme_cache.font_selected_color ;
553554
554- _draw_tab (sb, theme_cache. font_selected_color , current, x, has_focus ());
555+ _draw_tab (sb, col , current, x, has_focus ());
555556 }
556557
557558 if (buttons_visible) {
@@ -1007,6 +1008,74 @@ int TabBar::get_tab_icon_max_width(int p_tab) const {
10071008 return tabs[p_tab].icon_max_width ;
10081009}
10091010
1011+ void TabBar::set_font_selected_color_override (int p_tab, Color p_color) {
1012+ ERR_FAIL_INDEX (p_tab, tabs.size ());
1013+
1014+ if (tabs[p_tab].font_selected_color_override == p_color) {
1015+ return ;
1016+ }
1017+
1018+ tabs.write [p_tab].font_selected_color_override = p_color;
1019+
1020+ queue_redraw ();
1021+ }
1022+
1023+ Color TabBar::get_font_selected_color_override (int p_tab) const {
1024+ ERR_FAIL_INDEX_V (p_tab, tabs.size (), Color ());
1025+ return tabs[p_tab].font_selected_color_override ;
1026+ }
1027+
1028+ void TabBar::set_font_unselected_color_override (int p_tab, Color p_color) {
1029+ ERR_FAIL_INDEX (p_tab, tabs.size ());
1030+
1031+ if (tabs[p_tab].font_unselected_color_override == p_color) {
1032+ return ;
1033+ }
1034+
1035+ tabs.write [p_tab].font_unselected_color_override = p_color;
1036+
1037+ queue_redraw ();
1038+ }
1039+
1040+ Color TabBar::get_font_unselected_color_override (int p_tab) const {
1041+ ERR_FAIL_INDEX_V (p_tab, tabs.size (), Color ());
1042+ return tabs[p_tab].font_unselected_color_override ;
1043+ }
1044+
1045+ void TabBar::set_font_hovered_color_override (int p_tab, Color p_color) {
1046+ ERR_FAIL_INDEX (p_tab, tabs.size ());
1047+
1048+ if (tabs[p_tab].font_hovered_color_override == p_color) {
1049+ return ;
1050+ }
1051+
1052+ tabs.write [p_tab].font_hovered_color_override = p_color;
1053+
1054+ queue_redraw ();
1055+ }
1056+
1057+ Color TabBar::get_font_hovered_color_override (int p_tab) const {
1058+ ERR_FAIL_INDEX_V (p_tab, tabs.size (), Color ());
1059+ return tabs[p_tab].font_hovered_color_override ;
1060+ }
1061+
1062+ void TabBar::set_font_disabled_color_override (int p_tab, Color p_color) {
1063+ ERR_FAIL_INDEX (p_tab, tabs.size ());
1064+
1065+ if (tabs[p_tab].font_disabled_color_override == p_color) {
1066+ return ;
1067+ }
1068+
1069+ tabs.write [p_tab].font_disabled_color_override = p_color;
1070+
1071+ queue_redraw ();
1072+ }
1073+
1074+ Color TabBar::get_font_disabled_color_override (int p_tab) const {
1075+ ERR_FAIL_INDEX_V (p_tab, tabs.size (), Color ());
1076+ return tabs[p_tab].font_disabled_color_override ;
1077+ }
1078+
10101079void TabBar::set_tab_disabled (int p_tab, bool p_disabled) {
10111080 ERR_FAIL_INDEX (p_tab, tabs.size ());
10121081
@@ -1971,6 +2040,14 @@ void TabBar::_bind_methods() {
19712040 ClassDB::bind_method (D_METHOD (" get_tab_icon_max_width" , " tab_idx" ), &TabBar::get_tab_icon_max_width);
19722041 ClassDB::bind_method (D_METHOD (" set_tab_button_icon" , " tab_idx" , " icon" ), &TabBar::set_tab_button_icon);
19732042 ClassDB::bind_method (D_METHOD (" get_tab_button_icon" , " tab_idx" ), &TabBar::get_tab_button_icon);
2043+ ClassDB::bind_method (D_METHOD (" set_font_selected_color_override" , " tab_idx" , " color" ), &TabBar::set_font_selected_color_override);
2044+ ClassDB::bind_method (D_METHOD (" get_font_selected_color_override" , " tab_idx" ), &TabBar::get_font_selected_color_override);
2045+ ClassDB::bind_method (D_METHOD (" set_font_unselected_color_override" , " tab_idx" , " color" ), &TabBar::set_font_unselected_color_override);
2046+ ClassDB::bind_method (D_METHOD (" get_font_unselected_color_override" , " tab_idx" ), &TabBar::get_font_unselected_color_override);
2047+ ClassDB::bind_method (D_METHOD (" set_font_hovered_color_override" , " tab_idx" , " color" ), &TabBar::set_font_hovered_color_override);
2048+ ClassDB::bind_method (D_METHOD (" get_font_hovered_color_override" , " tab_idx" ), &TabBar::get_font_hovered_color_override);
2049+ ClassDB::bind_method (D_METHOD (" set_font_disabled_color_override" , " tab_idx" , " color" ), &TabBar::set_font_disabled_color_override);
2050+ ClassDB::bind_method (D_METHOD (" get_font_disabled_color_override" , " tab_idx" ), &TabBar::get_font_disabled_color_override);
19742051 ClassDB::bind_method (D_METHOD (" set_tab_disabled" , " tab_idx" , " disabled" ), &TabBar::set_tab_disabled);
19752052 ClassDB::bind_method (D_METHOD (" is_tab_disabled" , " tab_idx" ), &TabBar::is_tab_disabled);
19762053 ClassDB::bind_method (D_METHOD (" set_tab_hidden" , " tab_idx" , " hidden" ), &TabBar::set_tab_hidden);
0 commit comments