Slint Kit Documentation

Focus management

KitFocusTarget

Bridge between an actual visual target and focus-registry requests.

Bridge between an actual visual target and focus-registry requests.
Native screenshot of the same example, rendered with Skia.

Assign a stable token and generation, then register the target on the host after window creation. Connect focus-requested to the actual control’s take-focus() and forward observations to the registry.

A FocusRequest applies only when token, generation and eligibility match, once per request identifier. A recycled target must change generation; focus-applied acknowledges the processed request.

Complete example

This complete Slint file is a visual composition used to produce the screenshot above. Internal strings without a label property retain the kit’s default language; system dialogs follow the host platform. Projected state and callbacks requesting a decision need host wiring; the standalone fixture does not supply that controller. Set up the Rust project, then see the typed controller application for working editing, validation and selection.

// SPDX-License-Identifier: GPL-3.0-or-later
import { KitFocusTarget, KitTextField, KitTheme, KitThemes } from "@kit/kit.slint";

export component Example inherits Window {
    title: "KitFocusTarget example";
    preferred-width: 420px;
    preferred-height: 180px;
    max-width: 100000px;
    max-height: 100000px;
    background: root.theme.canvas;
    in-out property <KitTheme> theme: KitThemes.light;
    in-out property <string> status;
    VerticalLayout {
        padding: 24px; spacing: 16px; alignment: start;
        Text { text: "Focus Target"; color: root.theme.text-primary; font-size: 20px * root.theme.text-scale; font-weight: 600; }
        KitFocusTarget { token: 42; generation: 1; request: { present: true, token: 42, generation: 1, request: 1 }; focus-requested => { editor.take-focus(); } editor := KitTextField { theme: root.theme; label: "Project name"; text: "Field notes"; } }
        if root.status != "": Text { text: root.status; color: root.theme.text-secondary; font-size: 12px * root.theme.text-scale; wrap: word-wrap; }
    }
}

Download this example

Public API

Inherits FocusScope. The declarations below come from the component source. Parent properties remain available; see the controller guide for state management.

Properties

Name Type Direction
token int in
generation int in
eligible bool in
request FocusRequest in

Types and variants

Names below use Slint syntax. Shared Rust domain types live in slint_kit; presentation enums come from the Rust types generated by Slint.

Type Declaration
struct FocusRequest present: bool, token: int, generation: int, request: int

Callbacks

See also