9th of May 2022 to 15th of May 2022 - 0.2.4 Release


News about applications built with Slint


Cargo-UI has seen a new release: Version 0.3.2.

Highlights include better completion of crate names in the text field used to add crates to a project as well as a updated slint dependency -- which enables keyboard navigation.

Slint UI Library


We did a small bug fix release at version 0.2.4 this week. It just fixes a bug that was reported after last weeks release.

Tobias Hunger did an interview for the Rustacean Station back in early March, which was published this week! If you want to listen to about 40 minutes of chat covering topics ranging from Slint, open source development, accessibility and licensing, check out episode 68.

New Features

  • Model Adapters (#1249)

    Provide some adaptors to help with common tasks on the models like sorting and filtering.

  • Accessibility support (accessibility branch).

    We consider accessibility to be a crucial topic for any UI toolkit, so we wanted to verify that we can support the needs of a wide range of users early on.

    We have designed Slint with accessibility in mind from the get-go, but we have not validated and demonstrated how we want to have accessibility support work in Slint yet.

    PRs #1264, #1254, #1253 and #1251 were merged into the accessibility branch this week. They add and make use of a new set of properties starting with accessible- to mark up widgets for use with OS-specific accessibility frameworks.

    These PRs make us of Qt to provide a platform-independent API to accessibility functions at this time, mostly so that we can test out the capabilities of different OS platforms with our proposed solution.

    Together these patches enable rudimentary support for screen readers.

    More work is needed before we can merge the accessibility branch into master.


  • ScrollBar background is now Palette.white (#1275)

    Thank you to Florian Fetz for this pull request!

  • Fix compiler panic when optimizing child of layout (#1268)

    Normally, child of layout don't get optimized anyway because the layout sets their x and y prop, preventing the optimization. But if the rectangle has an opacity, its x and y property are stolen by the opacity element, and then it can get optimized anyway

    Fixes #1267

  • GL backend: process timing event before processing input events (#1256)

    Otherwise the timing code might think at the time of an event (eg key press) that the starting point of an animation that starts in this event is earlier in time than it really is. Causing the animation to appear as it had started earlier or literally be finished before it starts.

    Fixes #1255

  • Native style: Fix crash when opening a combobox (#1248)

    Bug introduced by https://github.com/slint-ui/slint/pull/1231

  • Fix focus of next item with empty components (#1247)

    Empty components were not properly handled when looking for the next item to focus on. This caused e.g. the "Install" page to never get focus in cargo-ui.

    This PR adds a test based on the cargo-ui interface and fixes that issue.

  • Fix priority of aliases when default values are involved (#1244)

Documentation and Demos

  • Add CLion instructions to README (#1272)

    Thank you to Simon Kämpe for this pull request!

  • Generate the enum documentation based of the common/enums.rs (#1265)

    So that makes it harder to forget to update the docs

    Note that the new builtin_enums.md does not contain a ### Values section header anymore. Also some enum where documented with the full enum value (such as TextHorizontalAlignment.left) while now this is omitted

    The CI should fail if one forget to run cargo xtask enumdocs after adding an enum or changing the docs

  • Replaced TryInto with TryFrom in slint_interpreter::Value (#1262)

    Converted TryInto into TryFrom as discussed in #1258.

    I also left the examples using try_into as is, without switching to the T::try_from() syntax, since they are still valid.

    I used a container (podman) to build and test this, just for reference here's the commands:

    $ podman run -it --rm -w/workspace -v$PWD:/workspace docker.io/rust:1.60.0-bullseye # apt update && apt install libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libfontconfig-dev # cargo test

    Thank you to Alessandro Re for this pull request!

  • 7guis examples (#1260, #1259, )

    7GUIs is a set of UI framework benchmarks. It defines 7 tasks and shows how those can be implemented using different UI frameworks.

    We had implementations for the 7 GUI tasks before, but they saw significant improvements thanks to new features we added into Slint over the last couple of weeks.

    7GUIs Counter task 7GUI Temperature Converter task 7GUI Flight Booker task 7GUI Timer task 7GUI CRUD task 7GUI Circle Drawer task 7GUI Cells task

Editors and Tooling Support

  • Add tree-sitter tests (#1239)

    This should make it much easier to fix some bugs that the parser has had. And make updating the parser easier when the language changes without creating regressions.

    Thank you to Jared Moulton for this pull request!


42 patches were committed in 18 pull requests by 8 authors.

← Next : 16th of May 2022 to 22nd of May 2022 | Previous : 2nd of May 2022 to 8th of May 2022 - Release 0.2.2

Slint is a declarative GUI toolkit to build native user interfaces for desktop and embedded applications written in Rust, C++, or JavaScript. Find more information at https://slint.dev/ or check out the source code at https://github.com/slint-ui/slint