|
|
|
|
|
by nananana9
135 days ago
|
|
You're clearly well-traveled, but it's unfortunate that none of the frameworks you listed follow the only UI paradigm I actually find enjoyable to work with. Look Immediate Mode UIs when you have some time to kill. It's a famous paradigm in videogame UI development, so unfortunately most publicly available IMGUI libraries are tailored for use in game engine editor tooling (not very style-able, simple layout algorithms and assumption that they're running in a 60FPS loop), but they're still a good place to look at, to get a general idea. The most famous library is Dear ImGui [1] The biggest advantage of the immediate mode approach is that you get UI/state syncing for free without having to manage any callbacks/getters/setters/magic properties. It introduces new problems (widgets are now defined implicitly and you need a system for keeping track of them over time), but they're way easier to solve than the UI/state sync issue. Examples of real-non-video-game software that uses it are File Pilot [2] and RAD Debugger [3], which are modern desktop UI applications with all the modern desktop UI application bells and whistles. [1] https://github.com/ocornut/imgui
[2] https://filepilot.tech/
[3] https://github.com/EpicGamesExt/raddebugger |
|
So, if that's not good enough for you, what would an even more faithful immediate mode API even look like? (And if your idea includes ditching the DOM as the render target, which is inherently "retained mode" and could never be otherwise due to performance and DOM state (like focus), I'm afraid it's a nonstarter.)