diff options
-rw-r--r-- | doc/classes/Button.xml | 2 | ||||
-rw-r--r-- | doc/classes/CheckBox.xml | 2 | ||||
-rw-r--r-- | doc/classes/CheckButton.xml | 2 | ||||
-rw-r--r-- | doc/classes/MenuButton.xml | 2 | ||||
-rw-r--r-- | doc/classes/OptionButton.xml | 2 | ||||
-rw-r--r-- | scene/gui/button.cpp | 10 | ||||
-rw-r--r-- | scene/gui/check_box.cpp | 2 | ||||
-rw-r--r-- | scene/gui/check_button.cpp | 2 | ||||
-rw-r--r-- | scene/gui/option_button.cpp | 2 |
9 files changed, 12 insertions, 14 deletions
diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml index 1cd9ca0afb..e78cdfc951 100644 --- a/doc/classes/Button.xml +++ b/doc/classes/Button.xml @@ -114,7 +114,7 @@ Icon modulate [Color] used when the [Button] is being pressed. </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="2"> - The horizontal space between [Button]'s icon and text. + The horizontal space between [Button]'s icon and text. Negative values will be treated as [code]0[/code] when used. </theme_item> <theme_item name="outline_size" data_type="constant" type="int" default="0"> The size of the text outline. diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml index 6483faf763..d39b75ae52 100644 --- a/doc/classes/CheckBox.xml +++ b/doc/classes/CheckBox.xml @@ -39,7 +39,7 @@ The vertical offset used when rendering the check icons (in pixels). </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="4"> - The separation between the check icon and the text (in pixels). + The separation between the check icon and the text (in pixels). Negative values will be treated as [code]0[/code] when used. </theme_item> <theme_item name="outline_size" data_type="constant" type="int" default="0"> The size of the text outline. diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml index 51b0411f4e..f49da69926 100644 --- a/doc/classes/CheckButton.xml +++ b/doc/classes/CheckButton.xml @@ -39,7 +39,7 @@ The vertical offset used when rendering the toggle icons (in pixels). </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="4"> - The separation between the toggle icon and the text (in pixels). + The separation between the toggle icon and the text (in pixels). Negative values will be treated as [code]0[/code] when used. </theme_item> <theme_item name="outline_size" data_type="constant" type="int" default="0"> The size of the text outline. diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml index 8baa724292..1f38510e83 100644 --- a/doc/classes/MenuButton.xml +++ b/doc/classes/MenuButton.xml @@ -65,7 +65,7 @@ Text [Color] used when the [MenuButton] is being pressed. </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="3"> - The horizontal space between [MenuButton]'s icon and text. + The horizontal space between [MenuButton]'s icon and text. Negative values will be treated as [code]0[/code] when used. </theme_item> <theme_item name="outline_size" data_type="constant" type="int" default="0"> The size of the text outline. diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml index a552a2c16c..f10c096c1b 100644 --- a/doc/classes/OptionButton.xml +++ b/doc/classes/OptionButton.xml @@ -246,7 +246,7 @@ The horizontal space between the arrow icon and the right edge of the button. </theme_item> <theme_item name="h_separation" data_type="constant" type="int" default="2"> - The horizontal space between [OptionButton]'s icon and text. + The horizontal space between [OptionButton]'s icon and text. Negative values will be treated as [code]0[/code] when used. </theme_item> <theme_item name="modulate_arrow" data_type="constant" type="int" default="0"> If different than [code]0[/code], the arrow icon will be modulated to the font color. diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp index 0a163b65ff..e163f4355c 100644 --- a/scene/gui/button.cpp +++ b/scene/gui/button.cpp @@ -34,11 +34,9 @@ #include "servers/rendering_server.h" Size2 Button::get_minimum_size() const { - Ref<Texture2D> _icon; - if (icon.is_null() && has_theme_icon(SNAME("icon"))) { + Ref<Texture2D> _icon = icon; + if (_icon.is_null() && has_theme_icon(SNAME("icon"))) { _icon = Control::get_theme_icon(SNAME("icon")); - } else { - _icon = icon; } return get_minimum_size_for_text_and_icon("", _icon); @@ -342,13 +340,13 @@ Size2 Button::get_minimum_size_for_text_and_icon(const String &p_text, Ref<Textu minsize.width = 0; } - if (!expand_icon && !p_icon.is_null()) { + if (!expand_icon && p_icon.is_valid()) { minsize.height = MAX(minsize.height, p_icon->get_height()); if (icon_alignment != HORIZONTAL_ALIGNMENT_CENTER) { minsize.width += p_icon->get_width(); if (!xl_text.is_empty() || !p_text.is_empty()) { - minsize.width += get_theme_constant(SNAME("hseparation")); + minsize.width += MAX(0, get_theme_constant(SNAME("h_separation"))); } } else { minsize.width = MAX(minsize.width, p_icon->get_width()); diff --git a/scene/gui/check_box.cpp b/scene/gui/check_box.cpp index cb80f5b5ef..26edc1f1b0 100644 --- a/scene/gui/check_box.cpp +++ b/scene/gui/check_box.cpp @@ -75,7 +75,7 @@ Size2 CheckBox::get_minimum_size() const { Size2 tex_size = get_icon_size(); minsize.width += tex_size.width; if (get_text().length() > 0) { - minsize.width += get_theme_constant(SNAME("h_separation")); + minsize.width += MAX(0, get_theme_constant(SNAME("h_separation"))); } Ref<StyleBox> sb = get_theme_stylebox(SNAME("normal")); minsize.height = MAX(minsize.height, tex_size.height + sb->get_margin(SIDE_TOP) + sb->get_margin(SIDE_BOTTOM)); diff --git a/scene/gui/check_button.cpp b/scene/gui/check_button.cpp index a09873ea4f..b9674ca41e 100644 --- a/scene/gui/check_button.cpp +++ b/scene/gui/check_button.cpp @@ -52,7 +52,7 @@ Size2 CheckButton::get_minimum_size() const { Size2 tex_size = get_icon_size(); minsize.width += tex_size.width; if (get_text().length() > 0) { - minsize.width += get_theme_constant(SNAME("h_separation")); + minsize.width += MAX(0, get_theme_constant(SNAME("h_separation"))); } Ref<StyleBox> sb = get_theme_stylebox(SNAME("normal")); minsize.height = MAX(minsize.height, tex_size.height + sb->get_margin(SIDE_TOP) + sb->get_margin(SIDE_BOTTOM)); diff --git a/scene/gui/option_button.cpp b/scene/gui/option_button.cpp index 851d425bfc..a5a6240e27 100644 --- a/scene/gui/option_button.cpp +++ b/scene/gui/option_button.cpp @@ -47,7 +47,7 @@ Size2 OptionButton::get_minimum_size() const { const Size2 arrow_size = Control::get_theme_icon(SNAME("arrow"))->get_size(); Size2 content_size = minsize - padding; - content_size.width += arrow_size.width + get_theme_constant(SNAME("h_separation")); + content_size.width += arrow_size.width + MAX(0, get_theme_constant(SNAME("h_separation"))); content_size.height = MAX(content_size.height, arrow_size.height); minsize = content_size + padding; |