Fix tab container too large when tabs are hidden

This commit is contained in:
nathanwfranke 2020-01-24 18:34:47 -06:00
parent 3c3ed67c39
commit c0a84f747e
2 changed files with 11 additions and 7 deletions

View file

@ -785,23 +785,25 @@ TabContainer::TabAlign TabContainer::get_tab_align() const {
return align; return align;
} }
void TabContainer::set_tabs_visible(bool p_visibe) { void TabContainer::set_tabs_visible(bool p_visible) {
if (p_visibe == tabs_visible) if (p_visible == tabs_visible)
return; return;
tabs_visible = p_visibe; tabs_visible = p_visible;
Vector<Control *> tabs = _get_tabs(); Vector<Control *> tabs = _get_tabs();
for (int i = 0; i < tabs.size(); i++) { for (int i = 0; i < tabs.size(); i++) {
Control *c = tabs[i]; Control *c = tabs[i];
if (p_visibe) if (p_visible)
c->set_margin(MARGIN_TOP, _get_top_margin()); c->set_margin(MARGIN_TOP, _get_top_margin());
else else
c->set_margin(MARGIN_TOP, 0); c->set_margin(MARGIN_TOP, 0);
} }
update(); update();
minimum_size_changed();
} }
bool TabContainer::are_tabs_visible() const { bool TabContainer::are_tabs_visible() const {
@ -936,8 +938,10 @@ Size2 TabContainer::get_minimum_size() const {
Ref<StyleBox> tab_disabled = get_stylebox("tab_disabled"); Ref<StyleBox> tab_disabled = get_stylebox("tab_disabled");
Ref<Font> font = get_font("font"); Ref<Font> font = get_font("font");
ms.y += MAX(MAX(tab_bg->get_minimum_size().y, tab_fg->get_minimum_size().y), tab_disabled->get_minimum_size().y); if (tabs_visible) {
ms.y += font->get_height(); ms.y += MAX(MAX(tab_bg->get_minimum_size().y, tab_fg->get_minimum_size().y), tab_disabled->get_minimum_size().y);
ms.y += font->get_height();
}
Ref<StyleBox> sb = get_stylebox("panel"); Ref<StyleBox> sb = get_stylebox("panel");
ms += sb->get_minimum_size(); ms += sb->get_minimum_size();

View file

@ -87,7 +87,7 @@ public:
void set_tab_align(TabAlign p_align); void set_tab_align(TabAlign p_align);
TabAlign get_tab_align() const; TabAlign get_tab_align() const;
void set_tabs_visible(bool p_visibe); void set_tabs_visible(bool p_visible);
bool are_tabs_visible() const; bool are_tabs_visible() const;
void set_tab_title(int p_tab, const String &p_title); void set_tab_title(int p_tab, const String &p_title);