Default realization posture for the standardized tree widgets
FROG — Free Open Graphical Language
frog.widgets.tree_controlfrog.widgets.tree_indicator
This default realization publishes the portable Tree geometry needed by runtimes and IDE hosts.
It intentionally keeps the SVG asset small: the shell publishes only stable anchors and geometry surfaces.
Rows, hierarchy affordances, active node or cell selection, editing, drag/drop feedback, and scrollbar thumbs are runtime host overlays generated from .frog instance data and this .wfrog realization contract.
This realization is downstream from widget class law. It does not define tree value semantics, editing semantics, check-state propagation, filesystem behavior, object-browser behavior, or host-native virtualization semantics. It also does not keep hidden prototype visuals in the SVG; unused visual fragments must be removed rather than disabled by runtime CSS.
rootlabelcaptionnode_regionvertical_scrollbarhorizontal_scrollbar
The following public parts are realized by host overlays aligned to the static shell geometry:
column_headersnode_rownode_indentnode_connectorexpander_facecheckbox_facenode_iconnode_labelactive_nodeactive_cellselection_faceedit_overlaydrag_feedbackdrop_target
assets/tree/templates/tree_shell.svg
node_regionanchors the visible tree body.column_headersis generated as a host overlay. Its visibility and fixed/scrolling posture are controlled by.frogdisplay properties.vertical_scrollbaranchors the vertical scrollbar host overlay.horizontal_scrollbaranchors the horizontal scrollbar host overlay.labelandcaptionexpose movable text anchors owned by the.froginstance.- Tree rows, text, expand/collapse controls, selection, edits, and scroll thumbs are generated overlays, not hidden SVG artwork.
node_iconconsumes realization-published item-symbol SVG assets andstyle.node_icon_slot.*for the item icon slot.expander_faceconsumesstyle.expander.*; it must not share the item icon slot style. The square frame may be hidden withstyle.expander.frame_visiblewhile keeping the plus/minus glyph and expansion behavior.checkbox_faceconsumesstyle.checkbox.*; it must not share the expander or item icon slot style.
A runtime may replace the SVG-backed tree with a host-native virtual tree when it preserves the published part model and public property/method/event surfaces.
The Tree shell SVG uses a viewBox and published static geometry parts, so the realization can be resized by an IDE or runtime host without bitmap pixelation.
The host must still recompute its dynamic overlays from the source-owned widget bounds, viewport settings, row and column records, text metrics, and this realization's published parts.
Scaling the SVG does not authorize hardcoded runtime visuals.
Rows, cells, scrollbars, expanders, checkboxes, item icons, active selection, edit overlays, labels, and captions remain bound to .frog instance data and the .wfrog asset/part contract.
Browser, Qt, native desktop, or GPU-backed hosts may all render this widget when they preserve that same contract.
- All declared public parts must exist in widget class law.
- The declared SVG resource must resolve relative to this package.
- The shell SVG must expose only static anchor and geometry
data-frog-partmarkers. - Dynamic Tree parts must be generated as host overlays aligned to the static geometry markers.
- Resources must not become semantic owners of tree value.
- Item icon slots, expanders, and checkbox faces must remain independently styleable through
style.node_icon_slot.*,style.expander.*, andstyle.checkbox.*. - The expander plus/minus glyph must be visually centered inside its expander face; hiding the frame must not remove the glyph or change expansion semantics.
- Host-native virtualization must not expose private node or row handles as public members.
- Unused prototype visuals must be removed from the SVG and
.wfrog, not hidden in the runtime.