diff options
| author | volzhs | 2018-02-07 06:32:03 +0900 |
|---|---|---|
| committer | Hein-Pieter van Braam | 2018-02-21 22:09:23 +0100 |
| commit | 317cb336eb548e6e202eca2e9b36455c01edfc33 (patch) | |
| tree | 6a377af2c744c4f02e8b51d0377a07ae4470745f /scene/gui/tab_container.cpp | |
| parent | 83b76a81714f8f41ec3da20df842c2acb2d63d4b (diff) | |
| download | godot-317cb336eb548e6e202eca2e9b36455c01edfc33.tar.gz godot-317cb336eb548e6e202eca2e9b36455c01edfc33.tar.zst godot-317cb336eb548e6e202eca2e9b36455c01edfc33.zip | |
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 df84290a7ee2e4e939fc4eccc030129227c83895)
Diffstat (limited to 'scene/gui/tab_container.cpp')
| -rw-r--r-- | scene/gui/tab_container.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index 0312e5809..6e85ce5eb 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -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"))); |
