TMut's shell and child infrastructure

About

TMut shows only one window. It never really creates a new GtkWindow. The reason for that is very simple: I noticed most mobile frameworks have a very poor window-creation time. Perhaps this has something to do with the small X servers being used? Perhaps not? I have no idea.

Another reason is that creating modal windows that go on top of each other is not a very nice thing to do. But that's just my opinion (it causes a lot of difficulties that you'll later have to deal with).

Design

What I made instead was a single-window UI design where that window has an API called tmut_shell_window_set_child. All other screens simply implement an interface called TMutShellChild. I keep a history of windows that got stacked on the TMutShellWindow so that when the user wants to go back, we just pop it off the shell window.

I'm not really satisfied with the implementation, so perhaps someone can make a better one? That would be great.

Implementation