2. Expose the destroy signal handler, and document that one needs to unparent children both from that, and in the destructor.
Is this a new warning? My initial thought is this should be a feature of Gtk::manage rather than making everybody hook destroy to unparent.
Not really new:
08d644c4a53 (Timm Bäder 2016-12-07 14:05:34 +0100 7558) g_warning ("Finalizing %s %p, but it still has children left:",
08d644c4a53 (Timm Bäder 2016-12-07 14:05:34 +0100 7559) gtk_widget_get_name (widget), widget);
My hypothesis about why this didn't bother people so far: up until recently the normal style even in the core Gtk was to inherit from Box (see for example GtkColorChooserWidget). Recently there was a lot of cleanup and widgets nowadays directly inherit from GtkWidget. That is the pattern I was attempting to follow in my own application as well (it is cleaner: it doesn't expose internal implementations through public inheritance, namely, that the internal structure of the widget is a box).
Out of the two custom widget examples in gtkmm-documentation/examples/book/custom one is a custom widget which does painting (and has no child widgets), and the other is using C++ destructor based destruction mechanism. I assume that not many people were trying to do custom widgets _and_ using them in a managed manner.