The new WIMP demo design.
WIMP Demo
Moved demo plan files to a subdirectory, and redesigned the demo to shift emphasis from window frames to embedded panels.
Cleaned up the debug information that was printing along the bottom of the screen. That stuff can now be toggled on or off with keyboard shortcuts.
Added a debug zoom feature. The offsetting is wrong (you’ll want to enable the mouse crosshair while zooming is active), but it’s good enough for inspecting widgets.
ProdUI
Rewrote the layout system to be a tree of nodes, rather than an array of direct widget references. (Widgets may be attached to nodes, but it’s not a requirement.) It’s easier this way to specify gaps and subsections.
Did some work on scaling. Finally, you can now load different sets of textures based on an arbitrary DPI number. I haven’t finished implementing the scaling of layouts and widgets; some things resize correctly, others are completely broken when not at a scale of 1.0.
Added TextBlock widgets with dynamic resizing (height based on wrapped text) and hyperlink support.
Reimplemented window sashes. They are now very heavily tied to the layout system.
Merged and refactored ‘base/container’, ‘wimp/workspace’ and ‘wimp/window_frame’ in order to implement sash functionality. Generally, sash actions are handled on the trickle-down phase of events.
The documentation is now stored in a separate repository. I was able to publish it as a website on GitHub Pages, here. Note that it’s very incomplete.
Debug-zoomin’.
96 DPI textures on the left, 288 DPI textures—and a very broken highlight rectangle—on the right.
(e:2025-03-31: grammar)