mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:28:12 +00:00
LibGUI: Focus next tab after closing active tab
Focus the next tab after closing the currently active tab. If the tab being closed is the last one then the new last tab is active.
This commit is contained in:
parent
de2e95b278
commit
05aeff1c4d
1 changed files with 10 additions and 3 deletions
|
@ -56,10 +56,17 @@ void TabWidget::add_widget(const StringView& title, Widget& widget)
|
|||
void TabWidget::remove_widget(Widget& widget)
|
||||
{
|
||||
VERIFY(widget.parent() == this);
|
||||
if (active_widget() == &widget)
|
||||
activate_next_tab();
|
||||
m_tabs.remove_first_matching([&widget](auto& entry) { return &widget == entry.widget; });
|
||||
auto tab_index = m_tabs.find_if([&widget](auto& entry) { return &widget == entry.widget; }).index();
|
||||
|
||||
auto is_active = active_widget() == &widget;
|
||||
m_tabs.remove(tab_index);
|
||||
remove_child(widget);
|
||||
|
||||
if (is_active && m_tabs.size() > 0) {
|
||||
auto next_tab_index = tab_index >= m_tabs.size() ? m_tabs.size() - 1 : tab_index;
|
||||
set_tab_index(next_tab_index);
|
||||
}
|
||||
|
||||
update_focus_policy();
|
||||
if (on_tab_count_change)
|
||||
on_tab_count_change(m_tabs.size());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue