From 5eba0d68e06c1b91abb160fac233a3cc9992284b Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 5 Dec 2024 15:56:52 +0100 Subject: [PATCH] wm: revoke curr focus if new focus is undefined This allows the window layouter to ensure that input entered after switching to an empty screen won't be routed to the old focused but no longer visible window. Issue #5390 --- repos/gems/src/server/wm/main.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/repos/gems/src/server/wm/main.cc b/repos/gems/src/server/wm/main.cc index 02cde0a789..88f9bc62fc 100644 --- a/repos/gems/src/server/wm/main.cc +++ b/repos/gems/src/server/wm/main.cc @@ -79,10 +79,14 @@ struct Wm::Main : Pointer::Tracker, Gui::Session_component::Action { _gui_root.revoke_exclusive_input(); _focus_rom.update(); + bool defined = false; _focus_rom.xml().with_optional_sub_node("window", [&] (Xml_node const &window) { _with_win_id_from_xml(window, [&] (Window_registry::Id id) { _gui_root.with_gui_session(id, [&] (Capability cap) { - _focus_gui_session.focus(cap); }); }); }); + _focus_gui_session.focus(cap); + defined = true; }); }); }); + if (!defined) + _focus_gui_session.focus({ }); } Signal_handler
_focus_handler {