1
0
mirror of https://github.com/godotengine/godot.git synced 2025-12-03 16:55:53 +00:00

Keep to show current script when closing all docs

also fix error when removing multiple tabs from TabContainer at same frame.
like closing multiple docs at once.

Fix #16403

(cherry picked from commit df84290a7e)
This commit is contained in:
volzhs
2018-02-07 06:32:03 +09:00
committed by Hein-Pieter van Braam
parent 83b76a8171
commit 317cb336eb
4 changed files with 22 additions and 13 deletions

View File

@@ -474,21 +474,24 @@ void TabContainer::remove_child_notify(Node *p_child) {
Control::remove_child_notify(p_child);
int tc = get_tab_count();
if (current == tc - 1) {
current--;
if (current < 0)
current = 0;
else {
call_deferred("set_current_tab", current);
}
}
call_deferred("_update_current_tab");
p_child->disconnect("renamed", this, "_child_renamed_callback");
update();
}
void TabContainer::_update_current_tab() {
int tc = get_tab_count();
if (current >= tc)
current = tc - 1;
if (current < 0)
current = 0;
else
set_current_tab(current);
}
void TabContainer::set_tab_align(TabAlign p_align) {
ERR_FAIL_INDEX(p_align, 3);
@@ -664,6 +667,7 @@ void TabContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("_child_renamed_callback"), &TabContainer::_child_renamed_callback);
ClassDB::bind_method(D_METHOD("_on_theme_changed"), &TabContainer::_on_theme_changed);
ClassDB::bind_method(D_METHOD("_update_current_tab"), &TabContainer::_update_current_tab);
ADD_SIGNAL(MethodInfo("tab_changed", PropertyInfo(Variant::INT, "tab")));
ADD_SIGNAL(MethodInfo("tab_selected", PropertyInfo(Variant::INT, "tab")));