Skip to content

Slint Node Editor 1.0.0

Choose a tag to compare

@tilladam tilladam released this 17 Sep 10:41

Slint Node Editor 1.0.0

The first stable release of Slint Node Editor, a Rust and Slint component library
for building visual graph editors with custom nodes and interactive links.

Highlights

  • Node dragging, multi-selection, box selection, pan, zoom, grid, and minimap.
  • Custom Slint nodes with embedded controls and application-defined connection
    rules, link styling, and routing.
  • Optional automatic graph layout through the layout feature.
  • Examples covering animated links, pin compatibility, and zoom-dependent detail.
  • Geometry updates after programmatic moves and drag commits, deterministic pin
    picking and layout, and tested downstream integration.
  • Keyboard focus follows presses on editor surfaces while preserving embedded
    text input and application-directed focus changes. Thanks to Olivier de Gaalon
    for the focus fix.

The application owns its graph models, selection, and editing policies. Rust
helpers handle common geometry, drag, and selection wiring.

Requirements and setup

Requires Slint 1.18.0 or newer and Rust 1.92 or newer.

[dependencies]
slint-node-editor = "1.0.0"

Applications also choose their Slint backend and renderer and enable
experimental-module-builds on slint-build to import @nodeeditor.
See the integration guide
for the full manifest and a tested application, and the
component reference
for the Slint API and Rust helpers.

Migration from earlier git snapshots

  • Replace Link.path-commands with Link.geometry: LinkPath; custom routes must
    provide a bounding box as well as path commands.
  • Pass a LinkPath constructor to compute_link_path_callback.
  • Use NodeEditorComputations for computations and NodeEditorEvents for node
    double-clicks. Use the current setup macros and generated global exports.
  • Project selection and final drag positions into the host model synchronously.
  • Windows using wire_node_editor! must expose
    public function focus-editor() { editor.focus(); }. Manual integrations must
    connect NodeEditorInternalCallbacks.take-editor-focus synchronously.

See the changelog
for details. Breaking public API changes after 1.0 require a new major version.

Known limitations

One editor per window is supported. Keyboard-only graph editing and structural
accessibility are incomplete. Zoom-dependent detail is application code;
automatic virtualization and large-graph frame-rate guarantees are not provided.
See supported configurations
for platform coverage.