Skip to content

Commit

Permalink
Merge pull request #91188 from YeldhamDev/love_fixing_other_peoples_r…
Browse files Browse the repository at this point in the history
…egressions

Fix `TabContainer` regressions related to switching tabs in certain cases
  • Loading branch information
akien-mga committed May 2, 2024
2 parents a6a7325 + 1c32fa2 commit 098a4e9
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions scene/gui/tab_container.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,7 @@ void TabContainer::_notification(int p_what) {
if (get_tab_count() > 0) {
_refresh_tab_names();
}
} break;

case NOTIFICATION_POST_ENTER_TREE: {
if (setup_current_tab >= -1) {
set_current_tab(setup_current_tab);
setup_current_tab = -2;
Expand Down Expand Up @@ -191,6 +189,25 @@ void TabContainer::_notification(int p_what) {
}
} break;

case NOTIFICATION_VISIBILITY_CHANGED: {
if (!is_visible() || setup_current_tab > -2) {
return;
}

updating_visibility = true;

// As the visibility change notification will be triggered for all children soon after,
// beat it to the punch and make sure that the correct node is the only one visible first.
// Otherwise, it can prevent a tab change done right before this container was made visible.
Vector<Control *> controls = _get_tab_controls();
int current = get_current_tab();
for (int i = 0; i < controls.size(); i++) {
controls[i]->set_visible(i == current);
}

updating_visibility = false;
} break;

case NOTIFICATION_TRANSLATION_CHANGED:
case NOTIFICATION_LAYOUT_DIRECTION_CHANGED:
case NOTIFICATION_THEME_CHANGED: {
Expand Down Expand Up @@ -611,6 +628,7 @@ void TabContainer::set_current_tab(int p_current) {
setup_current_tab = p_current;
return;
}

tab_bar->set_current_tab(p_current);
}

Expand Down

0 comments on commit 098a4e9

Please sign in to comment.