Hello Jonas,
from technical point of view, when the value of the property Formation is changed or one of the embedded views has changed its size, the Outline Box requests the superior component to update its layout. The layout of the embedded views is thus not managed directly by the Outline Box but by the superior component. This update is performed with a short delay in order to accumulate multiple alternations and so optimize the entire layout update calculation. The superior component uses a postsignal to defer the execution. The delay is thus very short.
Nevertheless, if you invoke GetContentArea() too early, even before the superior component was able to perform the postsignal and update the layout, GetContentArea() returns the value corresponding to the actual layout. To avoid this problem you need to delay the invocation of GetContentArea(). Try to use a postsignal for this purpose. For example:
// Change the formation
Outline.Formation = Core::Formation.TopToBottom;
// Delay the following execution in order to see the changes caused
// by the above alternation of the property 'Formation':
postsignal Slot;
With this approach, the execution of Slot is slightly delayed. The invocation of the method GetContentArea() in context of Slot should then return the correct size.
Better and recommended approach is to associate a slot method to Outline's OnUpdate property. Then the Outline Box will signal this method automatically when something has changed in its layout. Using GetContentArea() in context of this method is safe and recommended. See also Enumerate and search views controlled by the Outline Box,
Does it help you further?
Best regards
Paul Banach