Stacking windows of processes run by anaconda (e.g. nm-c-e)
The problem is that clicking on spoke/lightbox pulls the spoke/lightbox above nm-c-e window. I tried these approaches to cope with it:
1) Embedding nm-c-e window in anaconda using Gtk.Socket, Gtk.Plug. This requires patch in nm-connection-editor (adding plug). I made simple POC patch adding --socket XID option to nm-c-e (XID is id of socket window created in anaconda). Embedding the window in our UIObject we can e.g make screenshots and control other things. For main connection editor window it works nice even with lightbox. The problem is that other windows created by nm-c-e (e.g. routes dialog) stay owned by nm-c-e process and therefore are stacked below spoke after cliking on it.
Also this can't probably be used easily for secret agent's dialogs (wifi authentication) which are run by dbus service.
2) Setting keep_below hints of windows. With hub, spoke, and lighbox we'd need to set it in this order:
which means we need access hub from spoke (in the moment when lightbox is created). Without lighbox we could set the parameters already in hub before running a spoke. Or we can hide hub before displaying spoke and show it after it is destroyed, but it makes transition between hub and spoke not smooth (kind of flashing). I am sending raw patch for this last approach (with hiding of hub window) - "Keep nm-c-e-windows...". NMCEEmbedder class is what remained of UIobject using socket/plug (approach 1) - see the second patch "Embed nm-c-e...". It does not make much sense to use UIObject in this case, but strangely when I try to use just function (the third patch) I get this error when accessing lightbox object in the third patch (applied on top of the first one) "Use function...":