aboutsummaryrefslogtreecommitdiff
path: root/scene/gui/tab_container.cpp
diff options
context:
space:
mode:
authorvolzhs2018-02-07 06:32:03 +0900
committerHein-Pieter van Braam2018-02-21 22:09:23 +0100
commit317cb336eb548e6e202eca2e9b36455c01edfc33 (patch)
tree6a377af2c744c4f02e8b51d0377a07ae4470745f /scene/gui/tab_container.cpp
parent83b76a81714f8f41ec3da20df842c2acb2d63d4b (diff)
downloadgodot-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.cpp22
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")));