From 461a27a674df98f8bb375d47df03613484760e7c Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Thu, 25 Aug 2022 15:09:23 +0200 Subject: [PATCH] sculpt_manager: support opaque menu_view instances Related to issue #4592. --- repos/gems/src/app/sculpt_manager/menu_view.cc | 9 +++++++-- repos/gems/src/app/sculpt_manager/menu_view.h | 10 +++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/repos/gems/src/app/sculpt_manager/menu_view.cc b/repos/gems/src/app/sculpt_manager/menu_view.cc index 8035b083ac..b13bd243fb 100644 --- a/repos/gems/src/app/sculpt_manager/menu_view.cc +++ b/repos/gems/src/app/sculpt_manager/menu_view.cc @@ -59,14 +59,16 @@ Menu_view::Menu_view(Env &env, Registry ®istry, Ram_quota ram_quota, Cap_quota cap_quota, Session_label const &dialog_report_name, Session_label const &hover_rom_name, - Hover_update_handler &hover_update_handler) + Hover_update_handler &hover_update_handler, + Alpha alpha, Color background_color) : _dialog(dialog), _hover_update_handler(hover_update_handler), _child_state(registry, name, Priority::LEITZENTRALE, ram_quota, cap_quota), _dialog_reporter(env, "dialog", dialog_report_name.string()), _hover_rom(env, hover_rom_name.string()), - _hover_handler(env.ep(), *this, &Menu_view::_handle_hover) + _hover_handler(env.ep(), *this, &Menu_view::_handle_hover), + _opaque(alpha == Alpha::OPAQUE), _background_color(background_color) { _hover_rom.sigh(_hover_handler); @@ -108,6 +110,9 @@ void Menu_view::_gen_start_node_content(Xml_generator &xml) const xml.node("config", [&] () { if (min_width) xml.attribute("width", min_width); if (min_height) xml.attribute("height", min_height); + if (_opaque) xml.attribute("opaque", "yes"); + + xml.attribute("background", String<20>(_background_color)); xml.node("libc", [&] () { xml.attribute("stderr", "/dev/log"); }); xml.node("report", [&] () { xml.attribute("hover", "yes"); }); diff --git a/repos/gems/src/app/sculpt_manager/menu_view.h b/repos/gems/src/app/sculpt_manager/menu_view.h index 6e9b8f8ea0..0c87b37492 100644 --- a/repos/gems/src/app/sculpt_manager/menu_view.h +++ b/repos/gems/src/app/sculpt_manager/menu_view.h @@ -46,6 +46,10 @@ struct Sculpt::Menu_view : Noncopyable Signal_handler _hover_handler; + bool const _opaque; + + Color const _background_color; + bool _hovered = false; Constructible _seq_number { }; @@ -57,11 +61,15 @@ struct Sculpt::Menu_view : Noncopyable void _gen_start_node_content(Xml_generator &) const; + enum class Alpha { OPAQUE, ALPHA }; + Menu_view(Env &, Registry ®istry, Dialog &, Start_name const &, Ram_quota, Cap_quota, Session_label const &dialog_report_name, Session_label const &hover_rom_name, - Hover_update_handler &); + Hover_update_handler &, + Alpha alpha = Alpha::ALPHA, + Color background = Color { 127, 127, 127, 255 }); void generate();