mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 16:37:35 +00:00
LibGUI: Allow TabWidget to remove all tabs except one
This commit is contained in:
parent
ca2c81251a
commit
8a0d465fbc
2 changed files with 17 additions and 0 deletions
|
@ -64,6 +64,22 @@ void TabWidget::remove_widget(Widget& widget)
|
||||||
on_tab_count_change(m_tabs.size());
|
on_tab_count_change(m_tabs.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabWidget::remove_all_tabs_except(Widget& widget)
|
||||||
|
{
|
||||||
|
VERIFY(widget.parent() == this);
|
||||||
|
set_active_widget(&widget);
|
||||||
|
m_tabs.remove_all_matching([this, &widget](auto& entry) {
|
||||||
|
bool is_other = &widget != entry.widget;
|
||||||
|
if (is_other)
|
||||||
|
remove_child(*entry.widget);
|
||||||
|
return is_other;
|
||||||
|
});
|
||||||
|
VERIFY(m_tabs.size() == 1);
|
||||||
|
update_focus_policy();
|
||||||
|
if (on_tab_count_change)
|
||||||
|
on_tab_count_change(1);
|
||||||
|
}
|
||||||
|
|
||||||
void TabWidget::update_focus_policy()
|
void TabWidget::update_focus_policy()
|
||||||
{
|
{
|
||||||
FocusPolicy policy;
|
FocusPolicy policy;
|
||||||
|
|
|
@ -48,6 +48,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void remove_tab(Widget& tab) { remove_widget(tab); }
|
void remove_tab(Widget& tab) { remove_widget(tab); }
|
||||||
|
void remove_all_tabs_except(Widget& tab);
|
||||||
|
|
||||||
void set_tab_title(Widget& tab, const StringView& title);
|
void set_tab_title(Widget& tab, const StringView& title);
|
||||||
void set_tab_icon(Widget& tab, const Gfx::Bitmap*);
|
void set_tab_icon(Widget& tab, const Gfx::Bitmap*);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue