Okay, I admit it, so far I've been "cheating", rendering the page to a temp file every time something changes. No longer! I present to you the all-singing, all-dancing Mozilla editor version. You can select controls on the surface, type text straight into the page, resize controls, and drag-n-drop! This is the first you'll have seen of my co-conspirator Blago's work, but trust me, it's been worth the wait.
In other news, saving and loading are temporarily broken. We also haven't exposed many of the Mozilla editor's features, the main ones being cut/copy/paste, undo/redo, styling, and table editing. However, at this point it's mainly just a matter of hooking them up to toolbar buttons.
Oh, and those are new control icons. They haven't been released yet, as they're too embarassing, but if some SVG genius would like to improve them, the source files are available on request.
The inbound (Mono -> Gecko) C++ DOM function is working fine and I can recieve a C# call in JavaScript; now I just need to pass it off to the actual function.
There was a bit of trouble initially as I couldn't obtain an nsIWebBrowser pointer from gtk_moz_embed_get_nsIWebBrowser. This turned out to be because the Gecko# WebControl hadn't been shown yet (i.e. window.ShowAll()), but I didn't figure this out as other functions like gtk_moz_embed_get_location worked fine.
Implementing the ASP.NET GUI designer with Mozilla's Gecko web rendering engine is an obvious decision: it's open-source, has strong standards support and a large feature set, is highly extensible and flexible thanks to its XPCOM component system, and using Gecko# it can be embedded in a GTK# GUI. Mozilla is becoming an application platform, with XUL for declaratively writting GUIs, and JavaScript for program logic.
Gecko# wraps GtkMozEmbed, which is a C GTK widget, hiding Mozilla's native C++. Understandably this widget isn't bloated by wrapping the Mozilla DOM or other internals: it claims to exposes enough functionality for "about 80% of uses". Essentially this means a basic web browser.