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:
parent
0b798a50dc
commit
3f4df354cb
2 changed files with 13 additions and 1 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue