Package limn.scene


@NullMarked package limn.scene
Widget tree, event dispatch (coalescing + bubbling), focus and the measure/layout pass.
  • Class
    Description
    What changed on a widget, and what moved it.
    What about the widget changed.
    What moved the change, and the whole of this record's rule: The handler runs when, and only when, the user operated this widget.
    Every aspect but a text edit; Change.State.aspect() is never Change.Aspect.TEXT.
    A text edit: Change.TextEdit.aspect() is always Change.Aspect.TEXT, so aspect() == TEXT and instanceof Change.TextEdit are the same question in both directions.
    A watcher: told about every change to a widget, whatever moved it.
    Layout constraints handed down the tree (Flutter/Compose style): a widget's measured size must fall inside [minWidth..maxWidth] x [minHeight..maxHeight].
    The size step of a control: a deliberate, hand-tuned design axis, not a scale factor and not a DPI setting (that is Canvas.contentScale(), applied downstream in the backend; the two multiply, in that order, and must never be conflated).
    One of the six commands of an Edit menu, done by whichever widget has the keyboard.
    The float callback the JDK does not have, for the widgets whose value is a float.
    Rolling per-frame performance samples the Scene collects each frame: frames-per-second, CPU frame time (tick + layout + paint, in ms), input-processing time (ms), and how much of the scene each frame actually repainted.
    A fixed-capacity ring of recent samples (oldest evicted first) exposing the latest value, the windowed average/max, and a copy of the history for a sparkline.
    Edge insets in logical points (padding/margins), by the reading direction: start is the side a line of text starts from and end the side it ends at, the left and the right in a layout that reads left to right and the right and the left in one that reads right to left.
    The direction a subtree lays out in: an inherited design axis, not a transform and not a property of the locale.
    Owns a widget tree bound to one window: queues native input (with coalescing), dispatches events with hit-testing and bubbling, tracks hover, click synthesis and keyboard focus (Tab traversal in layout order), ticks animations and runs the two-phase layout before painting.
    Animation hook, called once per frame while registered.
    SPI for widgets that can scroll their content programmatically: scroll containers (ScrollView), virtualized lists (ListView), overflow strips, popup panels.
    A measured widget size in logical points.
    Three preferences the user sets for every application on their desktop: a light or dark appearance, less motion, and more contrast.
    A light or dark appearance, or none chosen.
    The palette a user chose when the platform's request for more contrast is a palette of its own: a Windows contrast theme, whose eight system colours every native application draws with.
    Appearance of the scene's hover tooltip panel.
    Widget<W extends Widget<W>>
    Base of the widget tree.