The PropagateChanges function basically updates the coordinates
of the windows recursively from their parents down the window
hierarchy. If the window type of the current node, call it W,
is vertical (horizontal) then the x (y) coordinates are copied from
the parent's coordinates. In that case, the y (x) coordinates are
copied from the Position array of the parent using the index of
the current window. The new total length (PMin, PMax,
PWidth) of the partition of W is also recorded to calculate the
changes on its Position array. Then, a fixed length is reduced
from this total length for each packed window. The remaining width is
to be partitioned among the rest of the children proportionally, thus
a ratio is calculated by dividing the old length to the new. The
Position array is then updated with this ratio and effects are
propagated down to lower level windows. The pseudo-code algorithm of the
propagate changes operation (PropagateChanges) is listed in
Appendix .