mirror of
https://github.com/mmueller41/genode.git
synced 2026-01-21 12:32:56 +01:00
xml_node: change with_sub_node signature
The `with_sub_node` method is renamed to `with_optional_sub_node` to better reflect that the non-existence of a sub node with the desired type is ignored. At the same time, the new `with_sub_node` now takes a second functor that is called when no sub node of the desired type exists. genodelabs/genode#4600
This commit is contained in:
committed by
Norman Feske
parent
f0e9881c7e
commit
7d143087c9
@@ -37,7 +37,7 @@ class Cbe_init::Configuration
|
||||
|
||||
Configuration (Genode::Xml_node const &node)
|
||||
{
|
||||
node.with_sub_node("virtual-block-device",
|
||||
node.with_optional_sub_node("virtual-block-device",
|
||||
[&] (Genode::Xml_node const &vbd)
|
||||
{
|
||||
_vbd_nr_of_lvls =
|
||||
@@ -47,7 +47,7 @@ class Cbe_init::Configuration
|
||||
_vbd_nr_of_leafs =
|
||||
vbd.attribute_value("nr_of_leafs", (Genode::uint64_t)0);
|
||||
});
|
||||
node.with_sub_node("free-tree",
|
||||
node.with_optional_sub_node("free-tree",
|
||||
[&] (Genode::Xml_node const &ft)
|
||||
{
|
||||
_ft_nr_of_lvls =
|
||||
|
||||
@@ -37,7 +37,7 @@ class Verbose_node
|
||||
|
||||
Verbose_node(Genode::Xml_node const &config)
|
||||
{
|
||||
config.with_sub_node("verbose", [&] (Genode::Xml_node const &verbose)
|
||||
config.with_optional_sub_node("verbose", [&] (Genode::Xml_node const &verbose)
|
||||
{
|
||||
_cmd_pool_cmd_pending = verbose.attribute_value("cmd_pool_cmd_pending" , false);
|
||||
_cmd_pool_cmd_in_progress = verbose.attribute_value("cmd_pool_cmd_in_progress", false);
|
||||
|
||||
@@ -428,11 +428,11 @@ void Depot_deploy::Child::gen_start_node(Xml_generator &xml,
|
||||
Affinity::Location location { };
|
||||
|
||||
if (affinity_from_launcher)
|
||||
launcher_xml.with_sub_node("affinity", [&] (Xml_node node) {
|
||||
launcher_xml.with_optional_sub_node("affinity", [&] (Xml_node node) {
|
||||
location = Affinity::Location::from_xml(affinity_space, node); });
|
||||
|
||||
if (affinity_from_start)
|
||||
start_xml.with_sub_node("affinity", [&] (Xml_node node) {
|
||||
start_xml.with_optional_sub_node("affinity", [&] (Xml_node node) {
|
||||
location = Affinity::Location::from_xml(affinity_space, node); });
|
||||
|
||||
xml.node("affinity", [&] () {
|
||||
|
||||
@@ -85,7 +85,7 @@ struct Depot_deploy::Main
|
||||
static_config.with_raw_content([&] (char const *start, size_t length) {
|
||||
xml.append(start, length); });
|
||||
|
||||
config.with_sub_node("report", [&] (Xml_node const &report) {
|
||||
config.with_optional_sub_node("report", [&] (Xml_node const &report) {
|
||||
|
||||
auto copy_bool_attribute = [&] (char const* name) {
|
||||
if (report.has_attribute(name)) {
|
||||
@@ -120,7 +120,7 @@ struct Depot_deploy::Main
|
||||
});
|
||||
});
|
||||
|
||||
config.with_sub_node("heartbeat", [&] (Xml_node const &heartbeat) {
|
||||
config.with_optional_sub_node("heartbeat", [&] (Xml_node const &heartbeat) {
|
||||
size_t const rate_ms = heartbeat.attribute_value("rate_ms", 2000UL);
|
||||
xml.node("heartbeat", [&] () {
|
||||
xml.attribute("rate_ms", rate_ms);
|
||||
|
||||
@@ -409,13 +409,13 @@ void Depot_download_manager::Main::_handle_query_result()
|
||||
Archive::User user { };
|
||||
|
||||
if (missing_index_files)
|
||||
index.with_sub_node("missing", [&] (Xml_node missing) {
|
||||
index.with_optional_sub_node("missing", [&] (Xml_node missing) {
|
||||
user = missing.attribute_value("user", Archive::User()); });
|
||||
|
||||
if (user.valid())
|
||||
return user;
|
||||
|
||||
dependencies.with_sub_node("missing", [&] (Xml_node missing) {
|
||||
dependencies.with_optional_sub_node("missing", [&] (Xml_node missing) {
|
||||
user = Archive::user(missing.attribute_value("path", Archive::Path())); });
|
||||
|
||||
if (!user.valid())
|
||||
|
||||
@@ -541,7 +541,7 @@ bool Main::cbe_control_file_yields_state_idle(Xml_node const &fs_query_listing,
|
||||
{
|
||||
bool result { false };
|
||||
bool done { false };
|
||||
fs_query_listing.with_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
fs_query_listing.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.for_each_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
if (done) {
|
||||
return;
|
||||
@@ -631,8 +631,8 @@ Main::State_string Main::_state_to_string(State state)
|
||||
Main::State Main::_state_from_fs_query_listing(Xml_node const &node)
|
||||
{
|
||||
State state { State::INVALID };
|
||||
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
if (_has_name(node_1, "state")) {
|
||||
state = _state_from_string(
|
||||
node_1.decoded_content<State_string>());
|
||||
@@ -817,7 +817,7 @@ void Main::_handle_snapshots_fs_query_listing(Xml_node const &node)
|
||||
case State::CONTROLS_SECURITY_USER_PASSPHRASE:
|
||||
{
|
||||
bool update_dialog { false };
|
||||
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
|
||||
_snapshots.for_each([&] (Snapshot const &snap)
|
||||
{
|
||||
@@ -931,8 +931,8 @@ void Main::_handle_client_fs_fs_query_listing(Xml_node const &node)
|
||||
switch (_state) {
|
||||
case State::STARTUP_DETERMINE_CLIENT_FS_SIZE:
|
||||
|
||||
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
|
||||
if (_has_name(node_1, "data")) {
|
||||
|
||||
@@ -957,8 +957,8 @@ void Main::_handle_client_fs_fs_query_listing(Xml_node const &node)
|
||||
switch (_resizing_state) {
|
||||
case Resizing_state::DETERMINE_CLIENT_FS_SIZE:
|
||||
|
||||
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
|
||||
if (_has_name(node_1, "data")) {
|
||||
|
||||
@@ -1010,8 +1010,8 @@ void Main::_handle_image_fs_query_listing(Xml_node const &node)
|
||||
case State::CONTROLS_SECURITY_USER_PASSPHRASE:
|
||||
{
|
||||
size_t size { 0 };
|
||||
node.with_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("file", [&] (Xml_node const &node_1) {
|
||||
if (_has_name(node_1, "cbe.img")) {
|
||||
size = node_1.attribute_value("size", (size_t)0);
|
||||
}
|
||||
@@ -1063,7 +1063,7 @@ _child_nr_of_provided_sessions(Xml_node const &sandbox_state,
|
||||
|
||||
if (child.attribute_value("name", String<128> { }) == child_state.start_name()) {
|
||||
|
||||
child.with_sub_node("provided", [&] (Xml_node const &provided) {
|
||||
child.with_optional_sub_node("provided", [&] (Xml_node const &provided) {
|
||||
provided.for_each_sub_node("session", [&] (Xml_node const &session) {
|
||||
|
||||
if (session.attribute_value("service", String<64> { }) == service_name) {
|
||||
@@ -3507,24 +3507,24 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Setup_obtain_params_hover const prev_hover { _setup_obtain_params_hover };
|
||||
Setup_obtain_params_hover next_hover { Setup_obtain_params_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
|
||||
node_2.with_sub_node("float", [&] (Xml_node const &node_3) {
|
||||
node_2.with_optional_sub_node("float", [&] (Xml_node const &node_3) {
|
||||
if (_has_name(node_3, "ok")) {
|
||||
next_hover = Setup_obtain_params_hover::START_BUTTON;
|
||||
}
|
||||
});
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("frame", [&] (Xml_node const &node_4) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("frame", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Passphrase")) {
|
||||
next_hover = Setup_obtain_params_hover::PASSPHRASE_INPUT;
|
||||
}
|
||||
});
|
||||
node_3.with_sub_node("float", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("button", [&] (Xml_node const &node_5) {
|
||||
node_3.with_optional_sub_node("float", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("button", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Show Hide")) {
|
||||
next_hover = Setup_obtain_params_hover::PASSPHRASE_SHOW_HIDE_BUTTON;
|
||||
@@ -3532,7 +3532,7 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
});
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
|
||||
if (_has_name(node_3, "Client FS Size")) {
|
||||
next_hover = Setup_obtain_params_hover::CLIENT_FS_SIZE_INPUT;
|
||||
@@ -3556,24 +3556,24 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Setup_obtain_params_hover const prev_hover { _setup_obtain_params_hover };
|
||||
Setup_obtain_params_hover next_hover { Setup_obtain_params_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
|
||||
node_2.with_sub_node("float", [&] (Xml_node const &node_3) {
|
||||
node_2.with_optional_sub_node("float", [&] (Xml_node const &node_3) {
|
||||
if (_has_name(node_3, "ok")) {
|
||||
next_hover = Setup_obtain_params_hover::START_BUTTON;
|
||||
}
|
||||
});
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("frame", [&] (Xml_node const &node_4) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("frame", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Passphrase")) {
|
||||
next_hover = Setup_obtain_params_hover::PASSPHRASE_INPUT;
|
||||
}
|
||||
});
|
||||
node_3.with_sub_node("float", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("button", [&] (Xml_node const &node_5) {
|
||||
node_3.with_optional_sub_node("float", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("button", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Show Hide")) {
|
||||
next_hover = Setup_obtain_params_hover::PASSPHRASE_SHOW_HIDE_BUTTON;
|
||||
@@ -3596,11 +3596,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Controls_root_hover const prev_hover { _controls_root_hover };
|
||||
Controls_root_hover next_hover { Controls_root_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3609,9 +3609,9 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Snapshots")) {
|
||||
|
||||
@@ -3646,11 +3646,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Snapshot_pointer const prev_snapshots_hover { _snapshots_hover };
|
||||
Snapshot_pointer next_snapshots_hover { };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3658,20 +3658,20 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_snapshots_select.valid()) {
|
||||
|
||||
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Leave")) {
|
||||
|
||||
next_hover = Controls_snapshots_hover::GENERATION_LEAVE_BUTTON;
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("button", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("button", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Discard")) {
|
||||
|
||||
@@ -3681,18 +3681,18 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
|
||||
} else {
|
||||
|
||||
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Leave")) {
|
||||
|
||||
next_hover = Controls_snapshots_hover::LEAVE_BUTTON;
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("vbox", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("vbox", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Generations")) {
|
||||
|
||||
node_6.with_sub_node("float", [&] (Xml_node const &node_7) {
|
||||
node_6.with_optional_sub_node("float", [&] (Xml_node const &node_7) {
|
||||
|
||||
Generation const generation {
|
||||
node_7.attribute_value(
|
||||
@@ -3710,7 +3710,7 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
});
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("button", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("button", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Create")) {
|
||||
|
||||
@@ -3741,11 +3741,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Dimensions_hover const prev_hover { _dimensions_hover };
|
||||
Dimensions_hover next_hover { Dimensions_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3753,16 +3753,16 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Leave")) {
|
||||
|
||||
next_hover = Dimensions_hover::LEAVE_BUTTON;
|
||||
}
|
||||
});
|
||||
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Expand Client FS")) {
|
||||
|
||||
@@ -3793,11 +3793,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Expand_client_fs_hover const prev_hover { _expand_client_fs_hover };
|
||||
Expand_client_fs_hover next_hover { Expand_client_fs_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3806,24 +3806,24 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Leave")) {
|
||||
|
||||
next_hover = Expand_client_fs_hover::LEAVE_BUTTON;
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("float", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("float", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Start")) {
|
||||
|
||||
next_hover = Expand_client_fs_hover::START_BUTTON;
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("frame", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("frame", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Contingent")) {
|
||||
|
||||
@@ -3848,12 +3848,12 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Expand_snapshot_buf_hover const prev_hover { _expand_snapshot_buf_hover };
|
||||
Expand_snapshot_buf_hover next_hover { Expand_snapshot_buf_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3862,25 +3862,25 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
node_5.with_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("hbox", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Leave")) {
|
||||
|
||||
next_hover = Expand_snapshot_buf_hover::LEAVE_BUTTON;
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("float", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("float", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Start")) {
|
||||
|
||||
next_hover = Expand_snapshot_buf_hover::START_BUTTON;
|
||||
}
|
||||
});
|
||||
node_5.with_sub_node("frame", [&] (Xml_node const &node_6) {
|
||||
node_5.with_optional_sub_node("frame", [&] (Xml_node const &node_6) {
|
||||
|
||||
if (_has_name(node_6, "Contingent")) {
|
||||
|
||||
@@ -3905,11 +3905,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Controls_security_hover const prev_hover { _controls_security_hover };
|
||||
Controls_security_hover next_hover { Controls_security_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3918,16 +3918,16 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Leave")) {
|
||||
|
||||
next_hover = Controls_security_hover::SECURITY_EXPAND_BUTTON;
|
||||
}
|
||||
});
|
||||
node_4.with_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
node_4.with_optional_sub_node("vbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Block Encryption Key")) {
|
||||
|
||||
@@ -3959,11 +3959,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Controls_security_block_encryption_key_hover const prev_hover { _controls_security_block_encryption_key_hover };
|
||||
Controls_security_block_encryption_key_hover next_hover { Controls_security_block_encryption_key_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -3972,16 +3972,16 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("button", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("button", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Rekey")) {
|
||||
|
||||
next_hover = Controls_security_block_encryption_key_hover::REPLACE_BUTTON;
|
||||
}
|
||||
});
|
||||
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Leave")) {
|
||||
|
||||
@@ -4005,11 +4005,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Controls_security_master_key_hover const prev_hover { _controls_security_master_key_hover };
|
||||
Controls_security_master_key_hover next_hover { Controls_security_master_key_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -4018,9 +4018,9 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Leave")) {
|
||||
|
||||
@@ -4044,11 +4044,11 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
Controls_security_user_passphrase_hover const prev_hover { _controls_security_user_passphrase_hover };
|
||||
Controls_security_user_passphrase_hover next_hover { Controls_security_user_passphrase_hover::NONE };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &node_0) {
|
||||
node_0.with_optional_sub_node("frame", [&] (Xml_node const &node_1) {
|
||||
node_1.with_optional_sub_node("vbox", [&] (Xml_node const &node_2) {
|
||||
node_2.with_optional_sub_node("hbox", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("button", [&] (Xml_node const &node_4) {
|
||||
|
||||
if (_has_name(node_4, "Shut down")) {
|
||||
|
||||
@@ -4057,9 +4057,9 @@ void File_vault::Main::_handle_hover(Xml_node const &node)
|
||||
}
|
||||
});
|
||||
});
|
||||
node_2.with_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
node_2.with_optional_sub_node("frame", [&] (Xml_node const &node_3) {
|
||||
node_3.with_optional_sub_node("vbox", [&] (Xml_node const &node_4) {
|
||||
node_4.with_optional_sub_node("hbox", [&] (Xml_node const &node_5) {
|
||||
|
||||
if (_has_name(node_5, "Leave")) {
|
||||
|
||||
|
||||
@@ -762,7 +762,7 @@ struct Main
|
||||
}
|
||||
|
||||
bool success = false;
|
||||
config.with_sub_node("actions", [&] (Genode::Xml_node actions) {
|
||||
config.with_optional_sub_node("actions", [&] (Genode::Xml_node actions) {
|
||||
success = _writer->execute_actions(actions); });
|
||||
|
||||
_env.parent().exit(success ? 0 : 1);
|
||||
|
||||
@@ -318,7 +318,7 @@ void Menu_view::Main::_handle_config()
|
||||
|
||||
_background_color = config.attribute_value("background", Color(127, 127, 127, 255));
|
||||
|
||||
config.with_sub_node("vfs", [&] (Xml_node const &vfs_node) {
|
||||
config.with_optional_sub_node("vfs", [&] (Xml_node const &vfs_node) {
|
||||
_vfs_env.root_dir().apply_config(vfs_node); });
|
||||
|
||||
_handle_dialog_update();
|
||||
|
||||
@@ -1247,7 +1247,7 @@ struct Sculpt::Main : Input_event_handler,
|
||||
/*
|
||||
* Read static platform information
|
||||
*/
|
||||
_platform.xml().with_sub_node("affinity-space", [&] (Xml_node const &node) {
|
||||
_platform.xml().with_optional_sub_node("affinity-space", [&] (Xml_node const &node) {
|
||||
_affinity_space = Affinity::Space(node.attribute_value("width", 1U),
|
||||
node.attribute_value("height", 1U));
|
||||
});
|
||||
|
||||
@@ -35,7 +35,7 @@ void Menu_view::_handle_hover()
|
||||
_seq_number.construct(seq);
|
||||
}
|
||||
|
||||
hover.with_sub_node("dialog", [&] (Xml_node hover) {
|
||||
hover.with_optional_sub_node("dialog", [&] (Xml_node hover) {
|
||||
_hovered = true;
|
||||
hover_result = _dialog.hover(hover);
|
||||
});
|
||||
|
||||
@@ -67,12 +67,12 @@ struct Sculpt::Component : Noncopyable
|
||||
if (path != pkg.attribute_value("path", Path()))
|
||||
return;
|
||||
|
||||
pkg.with_sub_node("runtime", [&] (Xml_node runtime) {
|
||||
pkg.with_optional_sub_node("runtime", [&] (Xml_node runtime) {
|
||||
|
||||
ram = runtime.attribute_value("ram", Number_of_bytes());
|
||||
caps = runtime.attribute_value("caps", 0UL);
|
||||
|
||||
runtime.with_sub_node("requires", [&] (Xml_node requires) {
|
||||
runtime.with_optional_sub_node("requires", [&] (Xml_node requires) {
|
||||
routes.update_from_xml(_route_update_policy, requires); });
|
||||
});
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ struct Sculpt::File_browser_state : Noncopyable
|
||||
{
|
||||
unsigned cnt = 0;
|
||||
with_query_result([&] (Xml_node node) {
|
||||
node.with_sub_node("dir", [&] (Xml_node listing) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node listing) {
|
||||
listing.for_each_sub_node([&] (Xml_node entry) {
|
||||
if (Index(cnt++) == index)
|
||||
fn(entry); }); }); });
|
||||
|
||||
@@ -47,13 +47,13 @@ class Sculpt::Runtime_config
|
||||
static Start_name _to_name(Xml_node node)
|
||||
{
|
||||
Start_name result { };
|
||||
node.with_sub_node("child", [&] (Xml_node child) {
|
||||
node.with_optional_sub_node("child", [&] (Xml_node child) {
|
||||
result = child.attribute_value("name", Start_name()); });
|
||||
|
||||
if (result.valid())
|
||||
return result;
|
||||
|
||||
node.with_sub_node("parent", [&] (Xml_node parent) {
|
||||
node.with_optional_sub_node("parent", [&] (Xml_node parent) {
|
||||
|
||||
Service::Type_name const service =
|
||||
node.attribute_value("name", Service::Type_name());
|
||||
@@ -143,8 +143,8 @@ class Sculpt::Runtime_config
|
||||
static Start_name _primary_dependency(Xml_node const start)
|
||||
{
|
||||
Start_name result { };
|
||||
start.with_sub_node("route", [&] (Xml_node route) {
|
||||
route.with_sub_node("service", [&] (Xml_node service) {
|
||||
start.with_optional_sub_node("route", [&] (Xml_node route) {
|
||||
route.with_optional_sub_node("service", [&] (Xml_node service) {
|
||||
result = _to_name(service); }); });
|
||||
|
||||
return result;
|
||||
@@ -291,14 +291,14 @@ class Sculpt::Runtime_config
|
||||
{
|
||||
Dep::Update_policy policy { _alloc };
|
||||
|
||||
node.with_sub_node("route", [&] (Xml_node route) {
|
||||
node.with_optional_sub_node("route", [&] (Xml_node route) {
|
||||
elem.deps.update_from_xml(policy, route); });
|
||||
}
|
||||
|
||||
{
|
||||
Child_service::Update_policy policy { elem.name, _alloc };
|
||||
|
||||
node.with_sub_node("provides", [&] (Xml_node provides) {
|
||||
node.with_optional_sub_node("provides", [&] (Xml_node provides) {
|
||||
elem._child_services.update_from_xml(policy,
|
||||
provides); });
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ struct Sculpt::Dialog : Interface
|
||||
{
|
||||
Hover_result result = Hover_result::UNMODIFIED;
|
||||
|
||||
hover.with_sub_node(sub_node, [&] (Xml_node sub_hover) {
|
||||
hover.with_optional_sub_node(sub_node, [&] (Xml_node sub_hover) {
|
||||
if (_match_sub_dialog(sub_hover, tail...) == Hover_result::CHANGED)
|
||||
result = Hover_result::CHANGED; });
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ struct Sculpt::File_browser_dialog : Noncopyable, Dialog
|
||||
unsigned cnt = 0;
|
||||
|
||||
_state.with_query_result([&] (Xml_node node) {
|
||||
node.with_sub_node("dir", [&] (Xml_node listing) {
|
||||
node.with_optional_sub_node("dir", [&] (Xml_node listing) {
|
||||
|
||||
if (_state.path != "/")
|
||||
_gen_back_entry(xml);
|
||||
|
||||
@@ -631,8 +631,8 @@ void Dialog::handle_hover(Xml_node const &hover)
|
||||
|
||||
_hovered_position.construct(max_x, y);
|
||||
|
||||
node.with_sub_node("float", [&] (Xml_node node) {
|
||||
node.with_sub_node("label", [&] (Xml_node node) {
|
||||
node.with_optional_sub_node("float", [&] (Xml_node node) {
|
||||
node.with_optional_sub_node("label", [&] (Xml_node node) {
|
||||
|
||||
Line::Index const x {
|
||||
node.attribute_value("at", max_x.value) };
|
||||
@@ -654,14 +654,14 @@ void Dialog::handle_hover(Xml_node const &hover)
|
||||
|
||||
_text_hovered = false;
|
||||
|
||||
hover.with_sub_node("frame", [&] (Xml_node node) {
|
||||
node.with_sub_node("button", [&] (Xml_node node) {
|
||||
hover.with_optional_sub_node("frame", [&] (Xml_node node) {
|
||||
node.with_optional_sub_node("button", [&] (Xml_node node) {
|
||||
|
||||
_text_hovered = true;
|
||||
|
||||
node.with_sub_node("float", [&] (Xml_node node) {
|
||||
node.with_sub_node("vbox", [&] (Xml_node node) {
|
||||
node.with_sub_node("hbox", [&] (Xml_node node) {
|
||||
node.with_optional_sub_node("float", [&] (Xml_node node) {
|
||||
node.with_optional_sub_node("vbox", [&] (Xml_node node) {
|
||||
node.with_optional_sub_node("hbox", [&] (Xml_node node) {
|
||||
with_hovered_line(node); }); }); }); }); });
|
||||
|
||||
if (hover_changed || position_changed || (_text_hovered != orig_text_hovered))
|
||||
|
||||
@@ -92,7 +92,7 @@ struct Text_area::Main : Sandbox::Local_service_base::Wakeup,
|
||||
if (!node.has_sub_node("dialog"))
|
||||
_dialog.handle_hover(Xml_node("<empty/>"));
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &dialog) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &dialog) {
|
||||
_dialog.handle_hover(dialog); });
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ struct Text_area::Main : Sandbox::Local_service_base::Wakeup,
|
||||
if (_editable()) {
|
||||
bool const orig_saved_reporter_enabled = _saved_reporter.constructed();
|
||||
|
||||
config.with_sub_node("report", [&] (Xml_node const &node) {
|
||||
config.with_optional_sub_node("report", [&] (Xml_node const &node) {
|
||||
_saved_reporter.conditional(node.attribute_value("saved", false),
|
||||
_env, "saved", "saved"); });
|
||||
|
||||
@@ -471,7 +471,7 @@ struct Text_area::Main : Sandbox::Local_service_base::Wakeup,
|
||||
|
||||
Saved_version const orig_saved_version = _saved_version;
|
||||
|
||||
config.with_sub_node("save", [&] (Xml_node const &node) {
|
||||
config.with_optional_sub_node("save", [&] (Xml_node const &node) {
|
||||
_saved_version.value =
|
||||
node.attribute_value("version", _saved_version.value); });
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ struct Touch_keyboard::Main : Sandbox::Local_service_base::Wakeup,
|
||||
{
|
||||
Input::Seq_number hover_seq { node.attribute_value("seq_number", 0U) };
|
||||
|
||||
node.with_sub_node("dialog", [&] (Xml_node const &dialog) {
|
||||
node.with_optional_sub_node("dialog", [&] (Xml_node const &dialog) {
|
||||
_dialog.handle_hover(hover_seq, dialog); });
|
||||
}
|
||||
|
||||
|
||||
@@ -105,10 +105,10 @@ void Dialog::handle_hover(Input::Seq_number seq, Xml_node const &dialog)
|
||||
Row::Id hovered_row_id { };
|
||||
Key::Id hovered_key_id { };
|
||||
|
||||
dialog.with_sub_node("frame", [&] (Xml_node const &frame) {
|
||||
frame.with_sub_node("vbox", [&] (Xml_node const &vbox) {
|
||||
vbox.with_sub_node("hbox", [&] (Xml_node const &hbox) {
|
||||
hbox.with_sub_node("vbox", [&] (Xml_node const &button) {
|
||||
dialog.with_optional_sub_node("frame", [&] (Xml_node const &frame) {
|
||||
frame.with_optional_sub_node("vbox", [&] (Xml_node const &vbox) {
|
||||
vbox.with_optional_sub_node("hbox", [&] (Xml_node const &hbox) {
|
||||
hbox.with_optional_sub_node("vbox", [&] (Xml_node const &button) {
|
||||
hovered_row_id = hbox .attribute_value("name", Row::Id());
|
||||
hovered_key_id = button.attribute_value("name", Key::Id());
|
||||
});
|
||||
|
||||
@@ -211,7 +211,7 @@ struct Terminal::Main : Character_consumer
|
||||
_fb_mode = _gui.mode();
|
||||
|
||||
/* apply initial size from config, if provided */
|
||||
_config.xml().with_sub_node("initial", [&] (Xml_node const &initial) {
|
||||
_config.xml().with_optional_sub_node("initial", [&] (Xml_node const &initial) {
|
||||
_fb_mode.area = Area(initial.attribute_value("width", _fb_mode.area.w()),
|
||||
initial.attribute_value("height", _fb_mode.area.h()));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user