Skip to main content

Module widget

Module widget 

Source
Expand description

Widget trait, tree traversal, and the top-level App struct.

§Coordinate system

Widget bounds are expressed in parent-local first-quadrant (Y-up) coordinates. A widget at bounds.x = 10, bounds.y = 20 is drawn 10 units right and 20 units up from its parent’s bottom-left corner.

OS/browser mouse events arrive in Y-down screen coordinates. The single conversion y_up = viewport_height - y_down happens inside App::on_mouse_move / App::on_mouse_down / App::on_mouse_up. All widget code sees Y-up coordinates only.

§Tree traversal

Paint: root → leaves (children painted on top of parents). Hit test: root → leaves (deepest child under cursor wins). Event dispatch: leaf → root (events bubble up; any widget can consume).

Structs§

App
Owns the widget tree, handles focus, and converts OS events to Y-up coords.
BackbufferCache
A CPU bitmap owned by a widget that opts into backbuffer caching.
InspectorNode
Flat snapshot of one widget for the inspector panel.

Enums§

BackbufferMode
How a widget’s backbuffer stores pixels.

Traits§

Widget
Every visible element in the UI is a widget.

Functions§

collect_inspector_nodes
Walk the subtree rooted at widget and collect an InspectorNode per widget in DFS paint order (root first).
dispatch_event
Dispatch event through a path (list of child indices from the root). The event bubbles leaf → root; returns Consumed if any widget consumed it.
hit_test_subtree
Walk the subtree rooted at widget and return the path (list of child indices) to the deepest widget that passes hit_test at local_pos.
paint_subtree
Paint widget and all its descendants. The caller must ensure ctx is already translated so that (0,0) maps to widget’s bottom-left corner.