From e27d0d36fa86b668e722a006c301e2e64d5a1922 Mon Sep 17 00:00:00 2001 From: Norman Feske <norman.feske@genode-labs.com> 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<Gui::Session> cap) { - _focus_gui_session.focus(cap); }); }); }); + _focus_gui_session.focus(cap); + defined = true; }); }); }); + if (!defined) + _focus_gui_session.focus({ }); } Signal_handler<Main> _focus_handler {