From a56c03d49584c81f67b24a508fbe87916b749275 Mon Sep 17 00:00:00 2001 From: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> Date: Sun, 18 Feb 2024 14:15:13 +0100 Subject: [PATCH] Fix error spam when adding tabs to `TabBar` without deselect `current` was allowed to be `-1` when deselection was disabled, causing errors in other methods when updating the size. --- scene/gui/tab_bar.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scene/gui/tab_bar.cpp b/scene/gui/tab_bar.cpp index f87bccdfe7ea..d20fef81647a 100644 --- a/scene/gui/tab_bar.cpp +++ b/scene/gui/tab_bar.cpp @@ -627,6 +627,10 @@ void TabBar::set_tab_count(int p_count) { offset = MIN(offset, p_count - 1); max_drawn_tab = MIN(max_drawn_tab, p_count - 1); current = MIN(current, p_count - 1); + // Fix range if unable to deselect. + if (current == -1 && !_can_deselect()) { + current = 0; + } _update_cache(); _ensure_no_over_offset(); @@ -1557,10 +1561,7 @@ bool TabBar::_can_deselect() const { } void TabBar::ensure_tab_visible(int p_idx) { - if (!is_inside_tree() || !buttons_visible) { - return; - } - if (p_idx == -1 && _can_deselect()) { + if (p_idx == -1 || !is_inside_tree() || !buttons_visible) { return; } ERR_FAIL_INDEX(p_idx, tabs.size());