From 6acfe8a41ef8bcf063599b261682e74ee15f84fd Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Thu, 11 Jul 2024 20:05:13 +0200 Subject: [PATCH] wm: forward mode change signal to viewless clients Fixes #5284 --- repos/gems/src/server/wm/gui.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/repos/gems/src/server/wm/gui.h b/repos/gems/src/server/wm/gui.h index 0a27941d5a..42e7ec0406 100644 --- a/repos/gems/src/server/wm/gui.h +++ b/repos/gems/src/server/wm/gui.h @@ -522,6 +522,9 @@ class Wm::Gui::Session_component : public Rpc_object, Signal_handler _input_handler { _env.ep(), *this, &Session_component::_handle_input }; + Signal_handler _mode_handler { + _env.ep(), *this, &Session_component::_handle_mode_change }; + Point _input_origin() const { if (Top_level_view const *v = _top_level_views.first()) @@ -632,6 +635,16 @@ class Wm::Gui::Session_component : public Rpc_object, } } + void _handle_mode_change() + { + /* + * Inform a viewless client about the upstream + * mode change. + */ + if (_mode_sigh.valid() && !_top_level_views.first()) + Signal_transmitter(_mode_sigh).submit(); + } + /** * Input_origin_changed_handler interface */ @@ -798,6 +811,7 @@ class Wm::Gui::Session_component : public Rpc_object, _view_handle_registry(session_alloc) { _gui_input.sigh(_input_handler); + _session.mode_sigh(_mode_handler); _input_session.event_queue().enabled(true); }