26th of September 2022 to 2nd of October 2022

Slint UI Library

New features

  • Add a C++ Sort Model class (#1688)

    This automatically sorts a model.

  • Add a C++ Map Model class (#1687)

    This matches the MapModel in the Rust API.

  • Add a C++ Filter Model class (#1685)

    This tries to match the FilterModel in the Rust API.

Tooling

  • Change signature of WASM LSP file import callback to use a string (d2d810)

    This is consistent with the Rust API and the WASM-interpreter.

  • online_editor: Add back support for LSP asking for file contents (#1694)

    This got lost when moving the code out of index.ts into editor_widget.ts.

  • LSP: De-duplicate result of queryProperties (#1686)

    When querying properties we walk down the tree of types from the current elements type down through the base types.

    We can see the same element several times that way as it may get assigned values on the way down to the definition. So de-duplicate properties in the result and return only the deepest as that's where the property got defined.

Fixes

  • Skia: fix quality of SVG images when using scale factor (#1692)

    Suppose we render an SVG at 100px x 100px with a screen scale factor of 2. Consequently we should be rendering the SVG at 200phx x 200phx, not 100x100.

    Do this by applying the scale factor, just like it's done in the femtovg renderer.

Janitor work

  • Use a vector for ItemRenderer::translate (#1700)

    This simplifies call sites and implementations.

  • Simplify FontRequest (#1701)

    It doesn't have to be generic as the frontend code creates it with logical lengths.

  • LSP: Enforce the signature of the file load callback in the WASM build of the interpreter and the LSP (dee236)
  • LSP: Improve type checking on WASM file import callback and use string as return type consistently (#1699)
  • LSP: Improve internal default logging behavior with std (#1698)

    Previously, any use of our internal debug_log!() macro would require a platform backend to be initialized. This was confusing when debugging something in the (headless) WASM LSP implementation and nothing showed up on the console.

    Now if we can, we will always log. If a platform backend exists, we route through it, otherwise we can do the fallback ourselves.

  • Port the Renderer and ItemRenderer APIs to use logical lengths (#1693, #1696, #1697)
  • Clean up properties and editor widget dependencies (#1683)
    • Use an alias for the signature of the property data notifier
    • Replace the onQueryText interface from the editor and instead provide an object with the property data notifier. That way no second connection between editor and properties widget is needed, everything is provided in the one callback.

    (This could also be a closure, instead of an interface implementation)

Statistics

39 patches committed in 14 pull requests by 2 authors.

← Next : 3rd of October 2022 to 9th of October 2022 | Previous : 19th of September 2022 to 25th of September 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