diff options
Diffstat (limited to 'scene/gui/check_button.cpp')
-rw-r--r-- | scene/gui/check_button.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp index 96484424f8..1ddc730dd1 100644 --- a/scene/gui/check_button.cpp +++ b/scene/gui/check_button.cpp @@ -34,25 +34,26 @@ #include "servers/rendering_server.h" Size2 CheckButton::get_icon_size() const { - Ref<Texture2D> on = Control::get_theme_icon(is_disabled() ? "on_disabled" : "on"); Ref<Texture2D> off = Control::get_theme_icon(is_disabled() ? "off_disabled" : "off"); Size2 tex_size = Size2(0, 0); - if (!on.is_null()) + if (!on.is_null()) { tex_size = Size2(on->get_width(), on->get_height()); - if (!off.is_null()) + } + if (!off.is_null()) { tex_size = Size2(MAX(tex_size.width, off->get_width()), MAX(tex_size.height, off->get_height())); + } return tex_size; } Size2 CheckButton::get_minimum_size() const { - Size2 minsize = Button::get_minimum_size(); Size2 tex_size = get_icon_size(); minsize.width += tex_size.width; - if (get_text().length() > 0) + if (get_text().length() > 0) { minsize.width += get_theme_constant("hseparation"); + } Ref<StyleBox> sb = get_theme_stylebox("normal"); minsize.height = MAX(minsize.height, tex_size.height + sb->get_margin(MARGIN_TOP) + sb->get_margin(MARGIN_BOTTOM)); @@ -60,12 +61,9 @@ Size2 CheckButton::get_minimum_size() const { } void CheckButton::_notification(int p_what) { - if (p_what == NOTIFICATION_THEME_CHANGED) { - _set_internal_margin(MARGIN_RIGHT, get_icon_size().width); } else if (p_what == NOTIFICATION_DRAW) { - RID ci = get_canvas_item(); Ref<Texture2D> on = Control::get_theme_icon(is_disabled() ? "on_disabled" : "on"); @@ -78,15 +76,15 @@ void CheckButton::_notification(int p_what) { ofs.x = get_size().width - (tex_size.width + sb->get_margin(MARGIN_RIGHT)); ofs.y = (get_size().height - tex_size.height) / 2 + get_theme_constant("check_vadjust"); - if (is_pressed()) + if (is_pressed()) { on->draw(ci, ofs); - else + } else { off->draw(ci, ofs); + } } } CheckButton::CheckButton() { - set_toggle_mode(true); set_text_align(ALIGN_LEFT); |