Fix tab container too large when tabs are hidden
This commit is contained in:
parent
3c3ed67c39
commit
c0a84f747e
2 changed files with 11 additions and 7 deletions
|
@ -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();
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue