From cf93c66e6e831f50040b8224255e481661ae63f1 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 30 Oct 2020 15:49:16 +0100 Subject: [PATCH] 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. --- Libraries/LibGUI/StackWidget.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Libraries/LibGUI/StackWidget.cpp b/Libraries/LibGUI/StackWidget.cpp index c7baf99d69..bde65d5151 100644 --- a/Libraries/LibGUI/StackWidget.cpp +++ b/Libraries/LibGUI/StackWidget.cpp @@ -42,17 +42,20 @@ void StackWidget::set_active_widget(Widget* widget) if (widget == m_active_widget) 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) m_active_widget->set_visible(false); m_active_widget = widget; if (m_active_widget) { 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_visible(true); } + + set_focus_proxy(m_active_widget); + if (on_active_widget_change) on_active_widget_change(m_active_widget); }