From 91eb80041d588ef22926422ae2fc39f375e11aec Mon Sep 17 00:00:00 2001 From: Bojidar Marinov Date: Wed, 28 Mar 2018 20:52:55 +0300 Subject: [PATCH] Fix StyleBox ignoring region rect and ProgressBar using center size ProgressBar used the center size of the stylebox to calculate its minimum size, thus disallowing certain setups. If the old behaviour is wanted, it can be forced by providing a custom minimum size, or by giving proper margins to the stylebox. Fixes #17779. --- scene/gui/progress_bar.cpp | 9 ++++++--- scene/resources/style_box.cpp | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scene/gui/progress_bar.cpp b/scene/gui/progress_bar.cpp index c85bed0451b..37e519e3755 100644 --- a/scene/gui/progress_bar.cpp +++ b/scene/gui/progress_bar.cpp @@ -33,13 +33,16 @@ Size2 ProgressBar::get_minimum_size() const { Ref bg = get_stylebox("bg"); + Ref fg = get_stylebox("fg"); Ref font = get_font("font"); - Size2 ms = bg->get_minimum_size() + bg->get_center_size(); + Size2 minimum_size = bg->get_minimum_size(); + minimum_size.height = MAX(minimum_size.height, fg->get_minimum_size().height); + minimum_size.width = MAX(minimum_size.width, fg->get_minimum_size().width); if (percent_visible) { - ms.height = MAX(ms.height, bg->get_minimum_size().height + font->get_height()); + minimum_size.height = MAX(minimum_size.height, bg->get_minimum_size().height + font->get_height()); } - return ms; + return minimum_size; } void ProgressBar::_notification(int p_what) { diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp index 626fda50df9..e87fd7bafc4 100644 --- a/scene/resources/style_box.cpp +++ b/scene/resources/style_box.cpp @@ -182,7 +182,7 @@ Size2 StyleBoxTexture::get_center_size() const { if (texture.is_null()) return Size2(); - return texture->get_size() - get_minimum_size(); + return region_rect.size - get_minimum_size(); } void StyleBoxTexture::set_expand_margin_size(Margin p_expand_margin, float p_size) {