diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index 5b2c93f7b33..4dd3724a741 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -15,6 +15,12 @@ + + The color of the checked icon when the checkbox is pressed. + + + The color of the unchecked icon when the checkbox is not pressed. + The vertical offset used when rendering the check icons (in pixels). diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index c2da6cfe3e3..bdcb049b6c4 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -14,6 +14,12 @@ + + The color of the checked icon when the checkbox is pressed. + + + The color of the unchecked icon when the checkbox is not pressed. + The vertical offset used when rendering the toggle icons (in pixels). diff --git a/scene/gui/check_box.cpp b/scene/gui/check_box.cpp index b6db89045b1..475dd1f4652 100644 --- a/scene/gui/check_box.cpp +++ b/scene/gui/check_box.cpp @@ -126,9 +126,9 @@ void CheckBox::_notification(int p_what) { ofs.y = int((get_size().height - get_icon_size().height) / 2) + theme_cache.check_v_offset; if (is_pressed()) { - on_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(on_tex->get_size()))); + on_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(on_tex->get_size())), false, theme_cache.checkbox_checked_color); } else { - off_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(off_tex->get_size()))); + off_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(off_tex->get_size())), false, theme_cache.checkbox_unchecked_color); } } break; } @@ -151,6 +151,9 @@ void CheckBox::_bind_methods() { BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, CheckBox, unchecked_disabled); BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, CheckBox, radio_checked_disabled); BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, CheckBox, radio_unchecked_disabled); + + BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, CheckBox, checkbox_checked_color); + BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, CheckBox, checkbox_unchecked_color); } CheckBox::CheckBox(const String &p_text) : diff --git a/scene/gui/check_box.h b/scene/gui/check_box.h index cc85a998006..62f6aa85322 100644 --- a/scene/gui/check_box.h +++ b/scene/gui/check_box.h @@ -48,6 +48,9 @@ class CheckBox : public Button { Ref unchecked_disabled; Ref radio_checked_disabled; Ref radio_unchecked_disabled; + + Color checkbox_checked_color; + Color checkbox_unchecked_color; } theme_cache; protected: diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp index f43eced22e6..78daaf2629e 100644 --- a/scene/gui/check_button.cpp +++ b/scene/gui/check_button.cpp @@ -133,9 +133,9 @@ void CheckButton::_notification(int p_what) { ofs.y = (get_size().height - tex_size.height) / 2 + theme_cache.check_v_offset; if (is_pressed()) { - on_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(on_tex->get_size()))); + on_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(on_tex->get_size())), false, theme_cache.button_checked_color); } else { - off_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(off_tex->get_size()))); + off_tex->draw_rect(ci, Rect2(ofs, _fit_icon_size(off_tex->get_size())), false, theme_cache.button_unchecked_color); } } break; } @@ -154,6 +154,9 @@ void CheckButton::_bind_methods() { BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, CheckButton, unchecked_mirrored); BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, CheckButton, checked_disabled_mirrored); BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, CheckButton, unchecked_disabled_mirrored); + + BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, CheckButton, button_checked_color); + BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, CheckButton, button_unchecked_color); } CheckButton::CheckButton(const String &p_text) : diff --git a/scene/gui/check_button.h b/scene/gui/check_button.h index a99e2fcb17a..74b38d4930a 100644 --- a/scene/gui/check_button.h +++ b/scene/gui/check_button.h @@ -48,6 +48,9 @@ class CheckButton : public Button { Ref unchecked_mirrored; Ref checked_disabled_mirrored; Ref unchecked_disabled_mirrored; + + Color button_checked_color; + Color button_unchecked_color; } theme_cache; protected: diff --git a/scene/theme/default_theme.cpp b/scene/theme/default_theme.cpp index 06fe298668f..c084fc41ba4 100644 --- a/scene/theme/default_theme.cpp +++ b/scene/theme/default_theme.cpp @@ -328,6 +328,9 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const theme->set_constant("check_v_offset", "CheckBox", 0); theme->set_constant("outline_size", "CheckBox", 0); + theme->set_color("checkbox_checked_color", "CheckBox", Color(1, 1, 1)); + theme->set_color("checkbox_unchecked_color", "CheckBox", Color(1, 1, 1)); + // CheckButton Ref cb_empty = memnew(StyleBoxEmpty); @@ -365,6 +368,9 @@ void fill_default_theme(Ref &theme, const Ref &default_font, const theme->set_constant("check_v_offset", "CheckButton", 0); theme->set_constant("outline_size", "CheckButton", 0); + theme->set_color("button_checked_color", "CheckButton", Color(1, 1, 1)); + theme->set_color("button_unchecked_color", "CheckButton", Color(1, 1, 1)); + // Button variations theme->set_type_variation(SceneStringName(FlatButton), "Button");