mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 22:38:12 +00:00
LibGUI: Make StackWidget set the active widget as its focus proxy
This transparently transfers focus to the active widget whenever the stack widget is focused.
This commit is contained in:
parent
698490c565
commit
cf93c66e6e
1 changed files with 5 additions and 2 deletions
|
@ -42,17 +42,20 @@ void StackWidget::set_active_widget(Widget* widget)
|
||||||
if (widget == m_active_widget)
|
if (widget == m_active_widget)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bool had_focus = is_focused() || (m_active_widget && m_active_widget->is_focused());
|
bool active_widget_had_focus = m_active_widget && m_active_widget->is_focused();
|
||||||
|
|
||||||
if (m_active_widget)
|
if (m_active_widget)
|
||||||
m_active_widget->set_visible(false);
|
m_active_widget->set_visible(false);
|
||||||
m_active_widget = widget;
|
m_active_widget = widget;
|
||||||
if (m_active_widget) {
|
if (m_active_widget) {
|
||||||
m_active_widget->set_relative_rect(rect());
|
m_active_widget->set_relative_rect(rect());
|
||||||
if (had_focus)
|
if (active_widget_had_focus)
|
||||||
m_active_widget->set_focus(true);
|
m_active_widget->set_focus(true);
|
||||||
m_active_widget->set_visible(true);
|
m_active_widget->set_visible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_focus_proxy(m_active_widget);
|
||||||
|
|
||||||
if (on_active_widget_change)
|
if (on_active_widget_change)
|
||||||
on_active_widget_change(m_active_widget);
|
on_active_widget_change(m_active_widget);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue