ソースを参照

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.
Andreas Kling 4 年 前
コミット
cf93c66e6e
1 ファイル変更5 行追加2 行削除
  1. 5 2
      Libraries/LibGUI/StackWidget.cpp

+ 5 - 2
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);
 }