On the contrary, the new model shows that even GTK itself longs for this model:
let button = newButton("Click Me")
window.add(button)
button.connect("clicked", buttonClicked)
# can you do that? what would happen then? how can a button be part of
two windows at the same time?
otherWindow.add(button)
Run
More seriously though, I still don't understand the problem. Ownership in UIs
is pretty simple, the window owns the layout container that owns the widgets
which own the strings inside it. People have used manual memory management in
Delphi for decades without much trouble, you occasionally had to use a leak
detector. The only problem was that it was unchecked at runtime so
use-after-free bugs were really hard to diagnose.