6th of June 2022 to 12th of June 2022
Slint UI Library
We're busy preparing for Embedded World 2022 in Nuremberg from 21st to 23rd of June. Stop by at booth 4-302 if you happen to be there!
We still landed the initial accessibility work we have been working on and got a contribution improving the TextInput and TextLabels and got our Live Preview working in the browser running VSCode and GitHub webIDE.
New Features
-
Live Preview in VSCode WebExtension(#1330)
Start working on a preview for the web extension in a tab
-
Add
read-only
property toTextInput
,LineEdit
, andTextEdit
. Propagatehorizontal-alignment
property fromTextInput
toTextEdit
andLineEdit
(#1321)Also cursor is hidden in read only mode but focus is still enabled like Qt QLineEdit and QTextEdit
Thank you to pubg-hacks for this pull request!
-
Basic accessibility support for Slint UIs (#1294)
This PR adds support for tools like screen readers to Slint UIs. It rebases the
slint-ui/accessibility
branch on top of themaster
branch.*This should get us started, but accessibility support is an additional way to interact with UIs that is very different from the "graphical way" most users will interact with the UI. No single PR will "make a toolkit accessibility", this needs to be an ongoing effort!*
This is what it does at this time (turn on sound to hear the screen reader;-):
The big picture for this PR is this:
First some new
accessible
properties) are added to the Slint compiler so that UIs can provide the extra information needed.Then some of the pre-defined widgets get annotated with these
accessible
properties.Finally the information is provided to the OS accessibility support layer via Qt's accessibility code. Qt has the charm of handling the major desktop platforms. Other backend implementations can be added as needed.
What does work?
- Support for all desktop OSes via the Qt accessibility backend. Other targets are currently not supported.
-
Making elements accessible by assigning the
accessible-role
property to them. Note that you do not want to have all elements accessible as many are internal implementation details of individual widgets (== trees of elements). All widgets should be accessible of course. -
Add
accessible-label
andaccessible-description
to elements to describe them to the accessibility layer. These are added to our widgets where sane default values can be set. -
Add more
accessible
properties where those make sense * Implement support for reporting of values (incl. ranges) to the accessibility layer. - Report locations of all accessible widgets to the accessibility layer
- Signalling of changes to the accessibility framework.
- Works on Rust/C++ and interpreter.
What is missing?
- Accessible actions are not yet implemented, so right now this is limited to normal keyboard focus/shortcut actions.
- Not all widgets we have are covered yet. Most notable is the text edit. There is no support for the edit actions, so this seemed of somewhat limited use at this time.
- Relations between objects are not generated yet.
- We do not report the full state of widgets yet.
What should be done next?
-
Improve the widgets to be more keyboard friendly and to add
accessible
properties where that makes sense. - Implement different back-ends so that we do not have to rely on the presence of Qt.
The most critical missing piece is of course that testing by real users is missing! This will most likely have some glaring problems I did not notice while testing as a seeing person.
As usual: Feedback is very welcome in all possible forms.
Fixes
-
Fix panic about multiple mutable borrows with the software renderer (#1329)
When using repeaters - like in the slide puzzle - and during renderer a component gets deleted, we call
free_graphics_resources
and try to free the dirty rectangle list in the partial renderer cache. At that point the cache is already mutably borrowed, which causes a panic.As remedy, apply the mutable borrow more fine grained and not right when calling render().
Janitor work
PRs: #1335
Statistics
83 patches were committed in 5 pull requests by 4 authors.
← Next : 13th of June 2022 to 19th of June 2022 | Previous : 30th of May 2022 to 5th of June 2022 →
Slint is a declarative GUI toolkit to build native user interfaces for desktop and embedded applications written in Rust, C++, JavaScript, and Python. Find more information at https://slint.dev/ or check out the source code at https://github.com/slint-ui/slint