nitpicker: report xray mode
This commit is contained in:
parent
a00f9bcf99
commit
2ef0b0796c
|
@ -1138,6 +1138,7 @@ struct Nitpicker::Main
|
||||||
|
|
||||||
Genode::Reporter pointer_reporter = { "pointer" };
|
Genode::Reporter pointer_reporter = { "pointer" };
|
||||||
Genode::Reporter focus_reporter = { "focus" };
|
Genode::Reporter focus_reporter = { "focus" };
|
||||||
|
Genode::Reporter xray_reporter = { "xray" };
|
||||||
|
|
||||||
Root<PT> np_root = { session_list, *domain_registry, global_keys,
|
Root<PT> np_root = { session_list, *domain_registry, global_keys,
|
||||||
ep.rpc_ep(), user_state, user_state, pointer_origin,
|
ep.rpc_ep(), user_state, user_state, pointer_origin,
|
||||||
|
@ -1212,6 +1213,7 @@ void Nitpicker::Main::handle_input(unsigned)
|
||||||
Point const old_pointer_pos = user_state.pointer_pos();
|
Point const old_pointer_pos = user_state.pointer_pos();
|
||||||
::Session * const old_focused_session = user_state.Mode::focused_session();
|
::Session * const old_focused_session = user_state.Mode::focused_session();
|
||||||
bool const old_kill_mode = user_state.kill();
|
bool const old_kill_mode = user_state.kill();
|
||||||
|
bool const old_xray_mode = user_state.xray();
|
||||||
|
|
||||||
/* handle batch of pending events */
|
/* handle batch of pending events */
|
||||||
if (input.is_pending())
|
if (input.is_pending())
|
||||||
|
@ -1220,6 +1222,7 @@ void Nitpicker::Main::handle_input(unsigned)
|
||||||
Point const new_pointer_pos = user_state.pointer_pos();
|
Point const new_pointer_pos = user_state.pointer_pos();
|
||||||
::Session * const new_focused_session = user_state.Mode::focused_session();
|
::Session * const new_focused_session = user_state.Mode::focused_session();
|
||||||
bool const new_kill_mode = user_state.kill();
|
bool const new_kill_mode = user_state.kill();
|
||||||
|
bool const new_xray_mode = user_state.xray();
|
||||||
|
|
||||||
/* report mouse-position updates */
|
/* report mouse-position updates */
|
||||||
if (pointer_reporter.is_enabled() && old_pointer_pos != new_pointer_pos) {
|
if (pointer_reporter.is_enabled() && old_pointer_pos != new_pointer_pos) {
|
||||||
|
@ -1231,6 +1234,14 @@ void Nitpicker::Main::handle_input(unsigned)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (xray_reporter.is_enabled() && old_xray_mode != new_xray_mode) {
|
||||||
|
|
||||||
|
Genode::Reporter::Xml_generator xml(xray_reporter, [&] ()
|
||||||
|
{
|
||||||
|
xml.attribute("enabled", new_xray_mode ? "yes" : "no");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/* report focus changes */
|
/* report focus changes */
|
||||||
if (old_focused_session != new_focused_session)
|
if (old_focused_session != new_focused_session)
|
||||||
report_focus(focus_reporter, new_focused_session);
|
report_focus(focus_reporter, new_focused_session);
|
||||||
|
@ -1284,6 +1295,22 @@ void Nitpicker::Main::handle_input(unsigned)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function for 'handle_config'
|
||||||
|
*/
|
||||||
|
static void configure_reporter(Genode::Reporter &reporter)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
Genode::Xml_node config_xml = Genode::config()->xml_node();
|
||||||
|
reporter.enabled(config_xml.sub_node("report")
|
||||||
|
.attribute(reporter.name().string())
|
||||||
|
.has_value("yes"));
|
||||||
|
} catch (...) {
|
||||||
|
reporter.enabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Nitpicker::Main::handle_config(unsigned)
|
void Nitpicker::Main::handle_config(unsigned)
|
||||||
{
|
{
|
||||||
config()->reload();
|
config()->reload();
|
||||||
|
@ -1297,22 +1324,9 @@ void Nitpicker::Main::handle_config(unsigned)
|
||||||
.attribute("color").value(&background.color);
|
.attribute("color").value(&background.color);
|
||||||
} catch (...) { }
|
} catch (...) { }
|
||||||
|
|
||||||
/* enable or disable reporting */
|
configure_reporter(pointer_reporter);
|
||||||
try {
|
configure_reporter(focus_reporter);
|
||||||
pointer_reporter.enabled(config()->xml_node().sub_node("report")
|
configure_reporter(xray_reporter);
|
||||||
.attribute("pointer")
|
|
||||||
.has_value("yes"));
|
|
||||||
} catch (...) {
|
|
||||||
pointer_reporter.enabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
focus_reporter.enabled(config()->xml_node().sub_node("report")
|
|
||||||
.attribute("focus")
|
|
||||||
.has_value("yes"));
|
|
||||||
} catch (...) {
|
|
||||||
focus_reporter.enabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* update domain registry and session policies */
|
/* update domain registry and session policies */
|
||||||
for (::Session *s = session_list.first(); s; s = s->next())
|
for (::Session *s = session_list.first(); s; s = s->next())
|
||||||
|
|
Loading…
Reference in New Issue