From a111507289d08abac94b9a477fc2312e9dd00b1a Mon Sep 17 00:00:00 2001 From: Melody Horn Date: Mon, 14 Dec 2020 12:38:56 -0700 Subject: add some accessibility info to gui libraries --- _posts/2020-08-21-survey-of-rust-gui-libraries.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/_posts/2020-08-21-survey-of-rust-gui-libraries.md b/_posts/2020-08-21-survey-of-rust-gui-libraries.md index aaaa954..6f0b3d4 100644 --- a/_posts/2020-08-21-survey-of-rust-gui-libraries.md +++ b/_posts/2020-08-21-survey-of-rust-gui-libraries.md @@ -152,7 +152,7 @@ so apparently druid is actually pretty darn usable. i only have a couple tiny issues with it: 1. it doesn't use platform native UI widgets, so it doesn't look quite like a windows app should, and it won't look quite like a mac or linux app should either if i test it there. this one is a feature as far as some people are concerned, but i am not on that list. -2. accessibility features like being able to tab between UI widgets are missing, so you'd have to roll those yourself in a real application. +2. accessibility features like being able to tab between UI widgets (*update 2020-12-14*: and also literally any screen reader support) are missing, so you'd have to roll those yourself in a real application. maybe they'll add that by default in future versions, maybe not, but it would be neat if it existed. 3. high-level documentation is incomplete. the individual struct/function docs are really good, but at a high level you don't really have a convenient place to jump in. @@ -206,6 +206,8 @@ add_todo.set_callback(Box::new(move || { we have to drag that position and size around manually. i don't like that. +*update 2020-12-14*: also, it doesn't expose anything to screen readers. + overall, this technically works i guess, but i think the code is ugly and the style of the resulting application is also ugly. we do get tab and space and everything working out of the box on buttons, which is always appreciated, though. not broken or anything, not something i'd be likely to choose to use though either. @@ -249,6 +251,8 @@ compared to druid, i'd say the logic is a little more intuitive, the layout cont the native build once again doesn't use native widgets and so once again doesn't get tab-between-fields or other accessibility features, but the web build uses actual HTML elements and so gets tab-between-fields for free. high-level documentation is a little more robust here, plus the concepts are less complicated in the first place. +*update 2020-12-14*: screen reader support in the native build is again nonexistent, but the web build works alright, at least with the one i'm testing with. + so it's a little easier to get off the ground than with druid, and the results on the web are way better, but it's more difficult to make it look decent. maybe that's just a documentation issue, but it's not ideal. regardless, yet again we have a perfectly usable library. @@ -308,6 +312,8 @@ excitingly, we now have a demo that looks bad and also doesn't work: excitingly, when we type some text and hit the "add" button, the text gets lost in the created todo, and i have no goddamn clue where it's going or what to do to fix it. +*update 2020-12-14*: also, a first so far, the native build actually provides some information to the screen reader! only some information - the checkbox labels come through, but the fact that they're attached to checkboxes doesn't - but still, it's closer than most of the other frameworks have managed to get. + the approach is interesting, though. as i'm writing this neutrino is unmaintained and seeking a new maintainer, so hopefully somebody has the time and energy to steer it forwards. @@ -328,6 +334,8 @@ it does let us build a working todo list, and one that looks pretty nice: i can't for the life of me figure out how to make the text field take up the entire width available to it. but everything works, and we get built-in support for adding the todo on Enter in the text field, which is nice. +*update 2020-12-14*: screen reader support is, once again, nonexistent. + in theory, there's web support, but when i tried it it very loudly didn't work: ```text @@ -386,4 +394,4 @@ well, kinda. druid works well if you want a straightforward layout experience. iced works well if you want a straightforward render-update architecture, or actual HTML elements on Web. everything else is, as of today, broken and/or more complex than i want. -and if you want native ui widgets to match your platform's look and feel, that's gonna be like a year away at least. +and if you want native ui widgets to match your platform's look and feel (*update 2020-12-14*: or be accessible at all), that's gonna be like a year away at least. -- cgit v1.2.3