4th of July 2022 to 10th of July 2022

Slint 0.2.5 Release

This week we released version 0.2.5 of Slint. We summarized the highlights in our blog post. Check out the CHANGELOG.md for a complete list of changes.

Slint UI Library

New Features

  • Button: Implement support to make the Button a toggle (#1384)

    Add flags that enable the Button to be used as a Toggle, e.g. for use in toolbars or similar places.

  • Added slint::Window::(set_)position and (set_)size (#1385)

    Using Rust, C++ and JavaScript APIs it's now possible to change the position and size of windows.

    Fixes #323

Changes to the .slint language

  • Add a warning when setting a two way binding for which the rhs does not declare a default value (#1398)

    Because of issue #1394 and because the semantic are not properly defined currently, we decided that future version of slint should always and only take the binding from the right hand side, even if it has no bindings.

    Since we can't change the behavior in 0.2, just add a warning instead for now. The warning can be silenced by setting a default binding for the property on the rhs.

    Ignoring the warning can still lead to panic (the one in #1394)

Fixes

  • Improve robustness of error reporting of the interpreter with dynamic scenes (#1396)

    With two-way bindings and dynamically created components it is possible to end up with a binding to a property where the binding outlives the property (see #1394).

    With rust generated code, this means on binding evaluation, the upgrade from self_weak to self_rc fails and panics.

    With the interpreter we moved a VRef into the binding closure, which ends up being a dangling pointer and causes memory corruption. This change aligns the interpreter with the Rust way of creating closures by creating the VRc first, moving a VWeak into the callback and binding closures and upgrading that.

  • Do not needlessly create the tree of accessible items (#1392)

    ... only do that when the OS accessibility layer requests this data.

  • Fix crash in cargo-ui (#1387)

    Fix a crash in cargo UI when showing dependencies, scrolling all the way down and then hitting tab to move the focus.

    • Fix component_at in repeaters (28b4e9)
  • GL backend: reduce memory allocations for text rendering (#1388)

    Fix a logic bug in the function to determine if we need to fall back to other fonts or if the font we selected provides complete coverage.

    In the common case where coverage is given, we start with some unknown coverage (in old_uncovered_*) and end up with empty remaining_required_*_coverage. That also happens to be less than old_uncovered_*. Since that check came first, we always returned "Improved", which meant we still built up the font fallback list, even though we didn't need to. Fix the order of checks to avoid that.

Internal Changes

  • swrenderer: Add a renderer that operate directly onh the frame buffer (#1340)

    It doesn't do line by line anymore, trying to avoid allocating memory for the scene

    Note: currently, this is slower than the line by line renderer on STM32H735, need to investigate why.

Janitor work

PRs: #1400, #1399, #1393, #1391

Statistics

42 patches were committed in 13 pull requests by 6 authors.

← Next : 11th of July 2022 to 17th of July 2022 | Previous : 27th of June 2022 to 3rd of July 2022


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