More Mozilla plug-in twiddling over the weekend. Perhaps it is only my naïveté about GTK+ and my preconceived notions of encapsulation; but it seems like GTK+ really wants me to implement my own widget in order to tie the lifetime of something to that of a widget. So that is what I have done, yielding GtkVrmlBrowser. It works; except that GtkGLExt doesn’t seem to clean up after itself properly.
Annoyingly, I can’t expose all the functionality I need through a C interface. What does one do when one needs to pass a C++ type to something in the implementation of a GTK+ widget? I punted and added a C++-only interface to the widget. Not ideal; but I’m not about to implement my own GIOChannel just for this. Another perspective is that I should just be using gtkmm; however, this application doesn’t have nearly enough GUI to justify pulling in the *mm dependency chain.