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 .