1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-10 06:27:35 +00:00

LibGUI: Make TabWidget unfocusable when tab-less

If there are no tab buttons or tab children, don't participate in the
focus chain.
This commit is contained in:
Andreas Kling 2020-10-30 16:30:33 +01:00
parent 0b798a50dc
commit 3f4df354cb
2 changed files with 13 additions and 1 deletions

View file

@ -41,7 +41,7 @@ namespace GUI {
TabWidget::TabWidget()
{
set_focus_policy(FocusPolicy::TabFocus);
set_focus_policy(FocusPolicy::NoFocus);
REGISTER_INT_PROPERTY("container_padding", container_padding, set_container_padding);
REGISTER_BOOL_PROPERTY("uniform_tabs", uniform_tabs, set_uniform_tabs);
@ -67,6 +67,7 @@ void TabWidget::add_widget(const StringView& title, Widget& widget)
{
m_tabs.append({ title, nullptr, &widget });
add_child(widget);
update_focus_policy();
}
void TabWidget::remove_widget(Widget& widget)
@ -75,8 +76,18 @@ void TabWidget::remove_widget(Widget& widget)
activate_next_tab();
m_tabs.remove_first_matching([&widget](auto& entry) { return &widget == entry.widget; });
remove_child(widget);
update_focus_policy();
}
void TabWidget::update_focus_policy()
{
FocusPolicy policy;
if (is_bar_visible() && !m_tabs.is_empty())
policy = FocusPolicy::TabFocus;
else
policy = FocusPolicy::NoFocus;
set_focus_policy(policy);
}
void TabWidget::set_active_widget(Widget* widget)
{
if (widget == m_active_widget)