14th of March 2022 to 20th of March 2022

Slint UI Library

This week the demos saw some polish, especially the 7guis one.

Microcontroller Units (MCU)

The printerdemo_mcu running on a Raspberry Pi Pico (RP2040 with 264K of RAM)

We adapted the Printer Demo UI so it is usable on our small screen attached to the Raspberry Pi Pico Microcontroller (RP2040 with 264K of RAM and 2M of flash)

  • Adapt the printer demo to work on the 2.8'' display (512b3d)
  • MCU: run the timers (eb9092)
  • MCU pico: increase heap size (ed60dc)
  • MCU pico: adjust the touch driver thresholds (8f4df4)
  • Properties: Save one usize for each binding (fa1fad)
  • Flickable: adjust the thresholds (fd2d82)
  • MCU renderer: Fix border radius bigger than the item (42947b)
  • MCU renderer: fix artifact when drawing clipped border rectangle (8f67b1)
  • MCU renderer: implement image-fit (8afee6)
  • MCU: improve touch driver (14a8a6)
  • MCU: fix drawing clipped images (b510c2)
  • MCU partial renderer: Actually do not draw items that are not in the dirty region (b54b9b)
  • MCU: Allow to use RGB565 for the draw buffer (608211)

New Features

  • add VecModel::set_vec (94cbaa)

    Thanks go out to rdrpenguin04 for this commit.

  • Add on_close_requested to Window to invoke a callback when the user requests closing (a7e798)


  • Fix CMake setting DT_NEEDED to the absolute soname of libslint_cpp in apps (9b62b0)

    As per rust-lang/cargo#5045, cargo does not set soname on created cdylibs. We use corrosion to import our .so into CMake, which ends up passing the absolute path to the .so to the link line of the application. Due to the lack of DT_SONAME, this means that DT_NEEDED of the application contains the full path to libslint_cpp.so. This is sub-optimal for example for building Yocto SDKs, the build paths should not end up in the created binaries.

    The library should be located using the linker's search paths and the .so name. For convenience, the application can use rpath to extend those search paths (and usually CMake already does that), but there is no need to code the absolute path to the library.

    Set the IMPORTED_NO_SONAME CMake variable to work around this.

    This can be verified with the steps as in #1066.

    Fixes #1066

  • Fixes Listview's element height when the height is specified in the parent sub-component (665365)

    Fixes #1057

  • Improve performance of non-rectangular clips with the GL backend (#1073)

    When using a non-rectangular clip, the sub-tree of clipped items is rendered into a layer. That layer is then used to fill the non-rectangular shape with a stencil, in femtovg. This layer is now persisted across draw calls.

  • Fix rendering of opacity with overlapping children (#1074) When using the `opacity` property, the element and its children are rendered into an intermediate layer and the opacity is evenly applied. Fixes #725
  • cmake: Do not break when slint is build with empty CMAKE_BUILD_TYPE (526166)

    Do not break building against slint using CMake from C++ when no CMAKE_BUILD_TYPE was set when building Slint.

    This just makes sure the build type is properly quoted, which makes sure we keep a (empty) string token where CMake expects one.

    Fixes: #1065

  • reset StandardListView's current-item if it is out of bounds (9d1888)

Janitor work

Changes: 86a6ad, a3830e, 226068


76 patches were committed by 6 authors.

← Next : 21st of March 2022 to 27th of March 2022 | Previous : 7th of March 2022 to 13th of March 2022 ‒ 0.2.1 Release

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