41 lines
1.5 KiB
Rust
41 lines
1.5 KiB
Rust
//! Round 0 accessibility-route probe, candidate C1 (modern egui).
|
|
//!
|
|
//! Opens a minimal window containing exactly one interactive widget (a
|
|
//! button) with a distinctive accessible name. egui's first-party AccessKit
|
|
//! integration (the `accesskit` feature, on by default in eframe 0.35) is
|
|
//! relied upon to publish that widget into the platform accessibility tree.
|
|
//! No manual accesskit_winit wiring is used here — the whole point of this
|
|
//! probe is to test the first-party route.
|
|
//!
|
|
//! This binary does not exit on its own: it is meant to be launched, given
|
|
//! a moment to register with AT-SPI, queried by the `a11y-verifier` script,
|
|
//! and then killed by the harness.
|
|
|
|
fn main() -> eframe::Result {
|
|
let options = eframe::NativeOptions {
|
|
viewport: egui::ViewportBuilder::default()
|
|
.with_inner_size([320.0, 180.0])
|
|
.with_title("EpiphanyProbeEgui"),
|
|
..Default::default()
|
|
};
|
|
|
|
eframe::run_native(
|
|
"EpiphanyProbeEgui",
|
|
options,
|
|
Box::new(|_cc| Ok(Box::new(ProbeApp))),
|
|
)
|
|
}
|
|
|
|
struct ProbeApp;
|
|
|
|
impl eframe::App for ProbeApp {
|
|
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame) {
|
|
egui::CentralPanel::default().show(ui, |ui| {
|
|
// The one accessible node round 0 needs: a button with a
|
|
// distinctive, greppable name. egui buttons get AT-SPI role
|
|
// "push button" and their name from the label text.
|
|
let _ = ui.button("EpiphanyProbeButton");
|
|
});
|
|
}
|
|
}
|