In Solvespace we use native GUI on Windows, MacOS, and Linux (GTK). This is probably not what you want to do, as we don't use any GUI widgets - only popup dialogs and menus. Everything in the app itself is rendered using OpenGL. Even our "text window" is drawn using OpenGL and GNU unifont (this is something that really needs to change BTW). The platform abstraction code is here: https://github.com/solvespace/solvespa…
> our "text window" is drawn using OpenGL and GNU unifont (this is something that really needs to change BTW) What would you change it to? I've implemented a GUI toolkit from scratch a couple times, and text editing was the hardest part by far.
I have no idea. The biggest problem with it now is that it's not resizable. We could use pango or something to render text at different sizes but that'd be a new dependency.
Also forgot: we do use a platform specific text entry widget.
Also2: when I say "we" I mean the previous maintainer did all the cross platform code. Since then it just works.