Vermont Views allows for windows to become related to one another. A window can have children associated with it. Children are displayed within their parent's interior work area. Output to a child window is echoed to the parent window's interior work area. If the child is not fully visible in the parent's work area, only the portion of the child window that is visible is echoed to the work area.
Each parent has its own linked list of child windows. When a parent is brought to the top of the screen, all of the children come with it. There are no limits, other than available memory, on how many children a window can have. Windows that have the same parent are referred to as sibling windows.
The parent-child relationship is used as the basis for almost all Vermont Views window management. By default, all windows are created as children of the full screen window, FULL_WNP. FULL_WNP's work area covers the entire physical screen. This allows Vermont Views to update only the portion of your window (which is a child of FULL_WNP) that is visible on the screen, even if the user has dragged your window partially off the screen. It also allows windows to be put up, written to, moved, resized and taken down independently of each other, and makes sure that all the window images within FULL_WNP are kept up to date while all this goes on.
Children will always be on top of their parents. You can easily write information to the parent; it will be placed underneath the child windows. The children will not be covered by output to their parents. If the parent is a virtual window, scrolling the data will be performed gracefully. The data will scroll under the child window without overwriting it.
Having children makes dragging much easier. If you drag a parent window, its children will automatically be dragged as well. A child cannot be dragged outside its parent. If you keep dragging a child window towards its parent's boundary, any part of the child window that moves beyond the parent's boundary will not be visible. You can drag a child window so that only one character remains in the parent, and the rest of the window is out of view.
Consider a simple example of two windows that have been placed on the screen. Both windows have the same parent, FULL_WNP, so they are siblings of each other. When dragging them, we can take them almost completely off the screen, but Vermont Views forces us to leave at least one character visible.
Having a parent-child relationship can be very convenient. For example, the message window associated with a data form is usually separate and outside of the form window. Suppose you wanted to place that message window on the bottom portion of the form. If you do not make the message window a child of the form window, several problems occur. First, bringing that form to the top will not bring the message window up with it. Since the form window and the message window now overlap, the form window would cover the message window, making it appear as though the field's message disappeared. Secondly, if you dragged the form, the message window would not move. Making the message window a child of the form window corrects these problems.
Changing the Order of the Windows