30th of May 2022 to 5th of June 2022

Slint UI Library

Tooling

  • LSP: Auto-complete types that are not yet imported, and add the import (#1304)
    Auto-complete types in .slint files
  • VSCode web extension (#1309, #1300)

    Two PRs enabled wasm-versions of the slint language server, which in turn enables the Slint plugin in online VSCode!

    Check out a Slint file in the Web IDE on GitHub: Once you install the Slint nightly extension, you get all the features (except preview) of our language server in the browser.

  • LSP: make the preview feature optional (#1311)

    So it can be disabled when building the web extension, and remove lots of dependencies.

    This reduces the wasm size from 6M to 2M

Fixes

  • Fix compiler panics when assignment in a condition in a binding (#1302)

    Fixes #1271

  • Fix rendering of source clipped images with the MCU renderer (#1305)

    The slide puzzle makes use of the source-clip-* properties and that unveiled three issues:

    • For the scale factor from image space to physical pixel space (sx/sy), use the source clip size, as we're only drawing those pixels. That means that the call sites of draw_image_impl need to pass the correct original image size if there is no source clip.
    • Similarly, the scaled_clip is in image coordinates, but needs to be relative to the source-clip-x/y
    • The geometry for the target rectangle on screen must originate at (0, 0) so that the application of sx/sy only changes the size.

Updates

  • vtable: Make VBox compatible with C++ (#1297)
    • Use NonNull so Option<VBox<X>> can be represented with null pointer
    • Call the drop function from the C++ destructor.
  • Move the software renderer to core (#1312)

    Move the MCU renderer in the feature-gated swrenderer module in core.

    This also moves the lengths module to core, and it is not feature gated. I think we can make use of it for the text_layout and other stuff.

  • Refactor the Item cache (#1298)

    The old item cache is kept for the partial rendering

    Other backend just use a normal HashMap to keep the item cache.

    The reason we do this is that we want to simplify the backend API, and eventually get rid of the free_graphics_resource call on the window (it's now been removed to component_destroyed, but we will replace that later by a deletion tracker like we have already for the property dependencies) The other problem with the previous approach is that we cannot mix the GL and Qt renderer with the partial renderer because they use the same cache.

Statistics

25 patches were committed in 11 pull requests by 3 authors.

← Next : 6th of June 2022 to 12th of June 2022 | Previous : 23rd of May 2022 to 29th of May 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