Spent half of the day investigating with WinDbg at the OpenCascade level if the modified tree structure is good and why the UpdateCurrentViewer() method of the context doesn't propagate the changes made at the OCAF data tree level.
Made a test C# application with OCAF and found that UpdateCurrentViewer() has no effect but redisplaying the objects works well and shows the changes. Will try this on Naro to see how it behaves. Implemented also on the OCAF C++ sample from OpenCascade the code from Naro and there the changes seem to propagate well. Probably I use in a different way the TPrsStd_AISPresentation class that displays the OCAF tree.
Hope to finish this task in 2-3 more hours of work.
Added code that saves the layout of the application at closing and restores it when starting. In this way the user can keep his preferred layout.