Skip to content

Slint Node Editor 2.0.0

Latest

Choose a tag to compare

@tilladam tilladam released this 29 Oct 20:00

Slint Node Editor 2.0.0

Node groups, undraggable nodes, themeable link colours and a corrected automatic
layout. This is a major release because the generated LinkData gained fields
and two Rust helpers changed; most applications migrate with a
..Default::default().

Highlights

  • Node groups: backing sheets that drag, collapse and refit around their
    members. The live drag preview and the drag commit share one movement rule.
    See the groups example.
  • Undraggable nodes: with BaseNode.draggable off, a user drag moves a node
    only with its group; a drag starting on it draws a marquee instead.
  • Link accents and dimming: colour links from an application palette that
    follows theme changes, and fade the links outside a focus.
  • Automatic layout returns top-left corners, as documented, and can line a
    rank's nodes up on their leading edge.
  • A node stays hovered over its own fields, labels and pins, and
    viewport-resized reports changes to the editor's size.
  • Fixes for marquees started on nodes and sheets in an editor offset within its
    window, and for interaction cancellation across the @nodeeditor module
    boundary.

Thanks to Olivier de Gaalon for the layout corners, rank alignment, link accents
and dimming, node hover, undraggable nodes and the marquee fixes.

Requirements and setup

Requires Slint 1.18.0 or newer and Rust 1.92 or newer.

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

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 1.x

  • LinkData literals that name every field: add accent: 0, dimmed: false, or
    end the literal in ..Default::default(). LinkData::new is unchanged.
  • GraphLogic::find_node_by_id accepts any model: drop explicit generic
    arguments such as find_node_by_id::<NodeData, _>.
  • sugiyama_layout positions are top-left corners: remove any half-size
    correction applied to them.

From 2.0, a generated struct may gain a field whose default keeps its behaviour
in a minor release; build them with their constructors or
..Default::default(). See the
changelog
for every change and the
compatibility rules.

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.
Content a node draws outside its rectangle, such as the outer half of a pin
centred on its edge, does not hover the node. See
supported configurations
for platform coverage.