
Hi
In fact, window is defined thus:
typedef boost::shared_ptr<window_base> window;
I think this can easily lead to retain-cycles, as widgets will often need a pointer to their window, which must be a weak pointer, as there are otherwise no ways to get the reference count of the window down to zero, without first having to remove all the widgets who keep a reference to their window.
That is, of course, up to the implementer. In fact, my Win32 implementation makes use of a boost::weak_ptr back to the container, to accommodate the auto-sizing mechanism. The GTK implementation has no need of this. It's all an implementation detail. If you have a look at the source code, you'll notice that widget_base declares a member returning a pointer to an undefined implementation class. I'm toying with the idea of exposing this on a per-platform basis. Regards David Turner