A sub bitmap of the backbuffer should work no differently than clipping. Have you tried?
I tried back then and something went wrong with drawing from the backbuffer to another bitmap, I'm not sure why. That's where I stopped and haven't worked on it since. There was also the problem of needing to keep the backbuffer as a freely available drawing surface. I would have had to get all the renders before drawing the scene, possibly clearing it and needing to redraw the whole thing. I dunno, there was a lot I didn't explore. I'll look into it some more.
void widget::move_rel(x, y)
I was going to say you have the extra hit of creating/destroying a bitmap, but I guess with sub-bitmaps it's not such a big deal.
And ultimately, they (sub bitmap vs clipping) are probably fairly equivalent in terms of code.
Apart from the code I posted before, there is little extra needed to accommodate it in how my system is coming together.
As it is now, the parent widget contains the children, and the ui_manager only knows of the parent. So each child is dependent on the events fed through the parent. Though this isn't necessary, it keeps things "in the family"
I may change it later, parent/child is still in experimental phase.