diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml
index ec6758908e6..82b641c589d 100644
--- a/doc/classes/PopupMenu.xml
+++ b/doc/classes/PopupMenu.xml
@@ -205,6 +205,7 @@
Adds a separator between items. Separators also occupy an index.
+ A [code]label[/code] can optionally be provided, which will appear at the center of the separator.
@@ -668,6 +669,9 @@
[Color] used for the hovered text.
+
+ [Color] used for labeled separators' text. See [method add_separator].
+
[StyleBox] displayed when the [PopupMenu] item is hovered.
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index a28921fc848..90ac95f3840 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -687,6 +687,7 @@ Ref create_editor_theme(const Ref p_theme) {
theme->set_color("font_color_hover", "PopupMenu", font_color_hl);
theme->set_color("font_color_accel", "PopupMenu", font_color_disabled);
theme->set_color("font_color_disabled", "PopupMenu", font_color_disabled);
+ theme->set_color("font_color_separator", "PopupMenu", font_color_disabled);
theme->set_icon("checked", "PopupMenu", theme->get_icon("GuiChecked", "EditorIcons"));
theme->set_icon("unchecked", "PopupMenu", theme->get_icon("GuiUnchecked", "EditorIcons"));
theme->set_icon("radio_checked", "PopupMenu", theme->get_icon("GuiRadioChecked", "EditorIcons"));
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 571fd5f5043..997307f1daa 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -482,6 +482,7 @@ void PopupMenu::_notification(int p_what) {
Color font_color_disabled = get_color("font_color_disabled");
Color font_color_accel = get_color("font_color_accel");
Color font_color_hover = get_color("font_color_hover");
+ Color font_color_separator = get_color("font_color_separator");
float font_h = font->get_height();
// Add the check and the wider icon to the offset of all items.
@@ -566,7 +567,7 @@ void PopupMenu::_notification(int p_what) {
if (text != String()) {
int center = (get_size().width - font->get_string_size(text).width) / 2;
- font->draw(ci, Point2(center, item_ofs.y + Math::floor((h - font_h) / 2.0)), text, font_color_disabled);
+ font->draw(ci, Point2(center, item_ofs.y + Math::floor((h - font_h) / 2.0)), text, font_color_separator);
}
} else {
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index 3ab77aaa5f6..79ab7822732 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -580,6 +580,7 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const
theme->set_color("font_color_accel", "PopupMenu", Color(0.7, 0.7, 0.7, 0.8));
theme->set_color("font_color_disabled", "PopupMenu", Color(0.4, 0.4, 0.4, 0.8));
theme->set_color("font_color_hover", "PopupMenu", control_font_color);
+ theme->set_color("font_color_separator", "PopupMenu", control_font_color);
theme->set_constant("hseparation", "PopupMenu", 4 * scale);
theme->set_constant("vseparation", "PopupMenu", 4 * scale);