diff --git a/repos/gems/recipes/pkg/motif_wm/runtime b/repos/gems/recipes/pkg/motif_wm/runtime index c01a56275..b963b61c9 100644 --- a/repos/gems/recipes/pkg/motif_wm/runtime +++ b/repos/gems/recipes/pkg/motif_wm/runtime @@ -1,8 +1,15 @@ - + + + + + + + + - + diff --git a/repos/gems/recipes/pkg/themed_wm/runtime b/repos/gems/recipes/pkg/themed_wm/runtime index 8bff9dca6..39f04e7e5 100644 --- a/repos/gems/recipes/pkg/themed_wm/runtime +++ b/repos/gems/recipes/pkg/themed_wm/runtime @@ -3,11 +3,13 @@ - + + + - + diff --git a/repos/gems/recipes/pkg/wm/runtime b/repos/gems/recipes/pkg/wm/runtime index 76bfe5f31..9c92c01a9 100644 --- a/repos/gems/recipes/pkg/wm/runtime +++ b/repos/gems/recipes/pkg/wm/runtime @@ -3,7 +3,9 @@ - + + + diff --git a/repos/gems/recipes/raw/motif_wm/wm.config b/repos/gems/recipes/raw/motif_wm/wm.config index 0296db990..065156753 100644 --- a/repos/gems/recipes/raw/motif_wm/wm.config +++ b/repos/gems/recipes/raw/motif_wm/wm.config @@ -19,7 +19,11 @@ - + + + + + @@ -45,7 +49,7 @@ - + @@ -56,6 +60,8 @@ + + @@ -75,9 +81,9 @@ - - - + + + @@ -92,10 +98,9 @@ + - - - + diff --git a/repos/gems/recipes/raw/wm/wm.config b/repos/gems/recipes/raw/wm/wm.config index 862bf4f98..080f5dc4e 100644 --- a/repos/gems/recipes/raw/wm/wm.config +++ b/repos/gems/recipes/raw/wm/wm.config @@ -20,36 +20,39 @@ - + - + - + - + - + - + - + + + - + - + - + - + - + - + - + + @@ -74,7 +77,7 @@ - + @@ -84,8 +87,10 @@ - - + + + + diff --git a/repos/gems/run/launcher.run b/repos/gems/run/launcher.run index 385d08146..e672faa8a 100644 --- a/repos/gems/run/launcher.run +++ b/repos/gems/run/launcher.run @@ -143,7 +143,7 @@ install_config { - + diff --git a/repos/gems/run/sculpt/leitzentrale.config b/repos/gems/run/sculpt/leitzentrale.config index 6e5a8aecf..d463d9b09 100644 --- a/repos/gems/run/sculpt/leitzentrale.config +++ b/repos/gems/run/sculpt/leitzentrale.config @@ -107,7 +107,9 @@ - + + + diff --git a/repos/gems/run/wm.run b/repos/gems/run/wm.run index 54f4c7fdb..d337e6eca 100644 --- a/repos/gems/run/wm.run +++ b/repos/gems/run/wm.run @@ -74,7 +74,9 @@ install_config { - + + + diff --git a/repos/gems/src/server/wm/main.cc b/repos/gems/src/server/wm/main.cc index 577cff690..de95b140b 100644 --- a/repos/gems/src/server/wm/main.cc +++ b/repos/gems/src/server/wm/main.cc @@ -23,6 +23,7 @@ /* local includes */ #include #include +#include namespace Wm { @@ -110,6 +111,7 @@ struct Wm::Main { env.ep(), *this, &Main::handle_resize_request_update }; Report_forwarder _report_forwarder { env, heap }; + Rom_forwarder _rom_forwarder { env, heap }; Main(Genode::Env &env) : env(env) { diff --git a/repos/gems/src/server/wm/report_forwarder.h b/repos/gems/src/server/wm/report_forwarder.h index 3284aa94c..50c212ee0 100644 --- a/repos/gems/src/server/wm/report_forwarder.h +++ b/repos/gems/src/server/wm/report_forwarder.h @@ -1,5 +1,5 @@ /* - * \brief Report service for intercepting shape reports + * \brief Report service for intercepting shape and clipboard reports * \author Norman Feske * \date 2019-02-18 * @@ -7,6 +7,9 @@ * policy to an application's shape report as done for the application's * 'Nitpicker' session. This consistency is needed by the pointer to correlate * the currently hovered nitpicker session with the reported shapes. + * Analogously, clipboard reports can be routed through the window + * manager to support the clipboard component with associating its clients + * with nitpicker's reported focus. */ /* diff --git a/repos/gems/src/server/wm/rom_forwarder.h b/repos/gems/src/server/wm/rom_forwarder.h new file mode 100644 index 000000000..5da945943 --- /dev/null +++ b/repos/gems/src/server/wm/rom_forwarder.h @@ -0,0 +1,96 @@ +/* + * \brief ROM service for intercepting clipboard ROMs + * \author Norman Feske + * \date 2019-06-26 + * + * This ROM service can be used as proxy for clipboard ROMs to ensure the + * consistency of the client labels appearing at the clipboard component + * with the label of the currently focused nitpicker client. + */ + +/* + * Copyright (C) 2019 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU Affero General Public License version 3. + */ + +#ifndef _ROM_FORWARDER_H_ +#define _ROM_FORWARDER_H_ + +/* Genode includes */ +#include +#include + +namespace Wm { struct Rom_forwarder; } + + +struct Wm::Rom_forwarder +{ + struct Session : Genode::Rpc_object + { + Genode::Env &_env; + Genode::Rom_connection _connection; + + Session(Genode::Env &env, Genode::Session_label const &label) + : _env(env), _connection(env, label.string()) + { _env.ep().manage(*this); } + + ~Session() { _env.ep().dissolve(*this); } + + void upgrade(Genode::Session::Resources const &resources) + { + _connection.upgrade(resources); + } + + + /*************************** + ** Rom_session interface ** + ***************************/ + + Genode::Rom_dataspace_capability dataspace() override + { + return _connection.dataspace(); + } + + bool update() override + { + return _connection.update(); + } + + void sigh(Signal_context_capability sigh) override + { + _connection.sigh(sigh); + } + }; + + struct Root : Genode::Root_component + { + Genode::Env &_env; + Genode::Allocator &_alloc; + + Session *_create_session(char const *args) override + { + return new (md_alloc()) Session(_env, Genode::label_from_args(args)); + } + + void _upgrade_session(Session *session, const char *args) override + { + session->upgrade(Genode::session_resources_from_args(args)); + } + + Root(Genode::Env &env, Genode::Allocator &alloc) + : + Genode::Root_component(env.ep(), alloc), + _env(env), _alloc(alloc) + { + _env.parent().announce(env.ep().manage(*this)); + } + + } _root; + + Rom_forwarder(Genode::Env &env, Genode::Allocator &alloc) + : _root(env, alloc) { } +}; + +#endif /* _ROM_FORWARDER_H_ */ diff --git a/repos/libports/run/mupdf.run b/repos/libports/run/mupdf.run index f44556278..f79281213 100644 --- a/repos/libports/run/mupdf.run +++ b/repos/libports/run/mupdf.run @@ -70,7 +70,9 @@ set config { - + + + diff --git a/repos/libports/run/qt5_common.inc b/repos/libports/run/qt5_common.inc index 5137a2e53..7c1392921 100644 --- a/repos/libports/run/qt5_common.inc +++ b/repos/libports/run/qt5_common.inc @@ -187,7 +187,7 @@ proc qt5_start_nodes { feature_arg } { - + diff --git a/repos/ports/run/vbox_win.inc b/repos/ports/run/vbox_win.inc index 50db1b361..2c4cd088a 100644 --- a/repos/ports/run/vbox_win.inc +++ b/repos/ports/run/vbox_win.inc @@ -144,7 +144,9 @@ if { $use_vms > 1 } { - + + +