From 383e8919e0187d87a303818e59982bc25edb99ea Mon Sep 17 00:00:00 2001 From: Michael Alexsander Date: Thu, 3 Dec 2020 11:36:03 -0300 Subject: [PATCH] Add "font_color_separator" theme property to 'PopupMenu' --- doc/classes/PopupMenu.xml | 4 ++++ editor/editor_themes.cpp | 1 + scene/gui/popup_menu.cpp | 3 ++- scene/resources/default_theme/default_theme.cpp | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml index c663f26d843..04798c04e91 100644 --- a/doc/classes/PopupMenu.xml +++ b/doc/classes/PopupMenu.xml @@ -207,6 +207,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. @@ -726,6 +727,9 @@ [Color] used for the hovered text. + + [Color] used for labeled separators' text. See [method add_separator]. + Font size of the menu items. diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp index c589a3c0425..723499ca9a5 100644 --- a/editor/editor_themes.cpp +++ b/editor/editor_themes.cpp @@ -692,6 +692,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 6dbf005f731..5b076649b08 100644 --- a/scene/gui/popup_menu.cpp +++ b/scene/gui/popup_menu.cpp @@ -446,6 +446,7 @@ void PopupMenu::_draw_items() { Color font_color_disabled = get_theme_color("font_color_disabled"); Color font_color_accel = get_theme_color("font_color_accel"); Color font_color_hover = get_theme_color("font_color_hover"); + Color font_color_separator = get_theme_color("font_color_separator"); float scroll_width = scroll_container->get_v_scrollbar()->is_visible_in_tree() ? scroll_container->get_v_scrollbar()->get_size().width : 0; float display_width = control->get_size().width - scroll_width; @@ -548,7 +549,7 @@ void PopupMenu::_draw_items() { if (items[i].separator) { if (text != String()) { int center = (display_width - items[i].text_buf->get_size().width) / 2; - items[i].text_buf->draw(ci, Point2(center, item_ofs.y + Math::floor((h - items[i].text_buf->get_size().y) / 2.0)), font_color_disabled); + items[i].text_buf->draw(ci, Point2(center, item_ofs.y + Math::floor((h - items[i].text_buf->get_size().y) / 2.0)), font_color_separator); } } else { item_ofs.x += icon_ofs + check_ofs; diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 1d92ed48309..85cd0f9bb42 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -571,6 +571,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);