diff --git a/UI/Qt/MacWindow.h b/UI/Qt/MacWindow.h index 148e566097..3253923d16 100644 --- a/UI/Qt/MacWindow.h +++ b/UI/Qt/MacWindow.h @@ -17,6 +17,7 @@ namespace Ladybird { void set_rounded_window_corners(QWidget&, bool enabled, double radius, QColor const& background_color); void install_always_active_window_control_hover_tracking(QWidget&, void (*hover_changed)(QWidget*)); void install_appkit_event_capture(); +void make_appkit_window_first_responder(QWidget&); bool start_appkit_window_drag(QWidget&); #endif diff --git a/UI/Qt/MacWindow.mm b/UI/Qt/MacWindow.mm index bf7309aa5c..7b2b5b16d8 100644 --- a/UI/Qt/MacWindow.mm +++ b/UI/Qt/MacWindow.mm @@ -176,6 +176,23 @@ void install_always_active_window_control_hover_tracking(QWidget& widget, void ( #endif } +void make_appkit_window_first_responder(QWidget& widget) +{ + auto* window_widget = widget.window(); + if (!window_widget) + return; + + auto* view = reinterpret_cast(window_widget->winId()); + if (!view) + return; + + auto* window = view.window; + if (!window) + return; + + [window makeFirstResponder:view]; +} + bool start_appkit_window_drag(QWidget& widget) { auto* window_widget = widget.window(); diff --git a/UI/Qt/Tab.cpp b/UI/Qt/Tab.cpp index dac8dbf3b5..d922cde0be 100644 --- a/UI/Qt/Tab.cpp +++ b/UI/Qt/Tab.cpp @@ -16,6 +16,9 @@ #include #include #include +#if defined(AK_OS_MACOS) +# include +#endif #include #include #include @@ -598,6 +601,9 @@ Tab::~Tab() = default; void Tab::focus_location_editor() { +#if defined(AK_OS_MACOS) + make_appkit_window_first_responder(*m_location_edit); +#endif m_location_edit->setFocus(); m_location_edit->selectAll(); m_location_edit->show_autocomplete();